Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: z3nth10n en 4 Julio 2013, 21:18 pm



Título: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: z3nth10n en 4 Julio 2013, 21:18 pm
Hola buenas, pues estoy intentando algo tal que así:

Citar
Hola soy el label más guapo del mundo.

:laugh:

Se podría hacer sin WPF ni polladas de esas?
Gracias de antemano.

Un saludo.
PD: Por si os sirve, solo voy a personalizar las variables no los textos... O quizas los textos también, no lo sé.



EDITO: No es posible con un Windows Form >:( ya me lo han confirmado por StackOverFlow :silbar:


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: Eleкtro en 5 Julio 2013, 04:06 am
EDITO: No es posible con un Windows Form >:( ya me lo han confirmado por StackOverFlow :silbar:

Si que es posible, pero no pinta nada fácil.

Puedes tranformar parte del label a un bitmap, luego modificas el color del bitmap, y luego dibujas ese bitmap en las coordenadas equivalentes.

No se me ocurre otra manera.

Hay muchas cosas parecidas en google... -> http://www.codeproject.com/Articles/5133/Flood-Fill-Algorithms-in-C-and-GDI

Como ya digo... esto fácil no es.

Saludos


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: Eleкtro en 5 Julio 2013, 04:20 am
Código
  1. Public Class Form1
  2.  
  3.    Dim bmp As New Bitmap("c:\1.png")
  4.  
  5.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  6.        ' Blanco a Rojo
  7.        ' IMPORTANTE: Utilizar colores ARGB en el primer color
  8.        PictureBox1.BackgroundImage = Fill_Bitmap_Color(bmp, Color.FromArgb(255, 255, 255, 255), Color.Red)
  9.    End Sub
  10.  
  11.    Private Function Fill_Bitmap_Color(ByVal Image As Bitmap, ByVal FromColor As Color, ByVal ToColor As Color)
  12.  
  13.        Dim bmp As New Bitmap(Image)
  14.  
  15.        Dim x As Integer = 0, y As Integer = 0
  16.  
  17.        While x < bmp.Width
  18.            y = 0
  19.            While y < bmp.Height
  20.                If Image.GetPixel(x, y) = FromColor Then bmp.SetPixel(x, y, ToColor)
  21.                Math.Max(Threading.Interlocked.Increment(y), y - 1)
  22.            End While
  23.            Math.Max(Threading.Interlocked.Increment(x), x - 1)
  24.        End While
  25.  
  26.        Return bmp
  27.  
  28.    End Function
  29.  
  30. End Class

Ale, ya tienes media parte hecha ;)


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: z3nth10n en 5 Julio 2013, 11:34 am
Más sencillo, ayer ya me dieron la solución empezaron diciendo que no, pero luego vino un Pro y lo hizo con un RichTextBox, voy a mejorar el Snippet y lo mando :silbar:


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: Eleкtro en 5 Julio 2013, 12:18 pm
ayer ya me dieron la solución

Esa solución es una piltrafada, a menos que sigas codeando el usercontrol para evitar que se muestre el cursor de texto y que no se le pueda clickar al RichTextBox, y también que no se aprecién las "selecciones" cuando seleccionas una parte de texto.

Saludos


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: z3nth10n en 5 Julio 2013, 12:37 pm
Pero si estamos imitando un Label pa que queremos seleccionar texto :laugh:


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: Eleкtro en 5 Julio 2013, 12:59 pm
Esa solución es una piltrafada, a menos que ...
y también que no se aprecién las "selecciones" cuando seleccionas una parte de texto.

Pero si estamos imitando un Label pa que queremos seleccionar texto :laugh:

Vamos a ver, Ikillnukes, ¿Sabes lo que es un RichTextbox?, bueno, pues para empezar...no es una etiqueta.

Intenta por entender estas dos líneas de tu snippet:

Citar
Código
  1.        rtb.SelectionStart = index
  2.        rtb.SelectionLength = rtb.TextLength - index

(http://img24.imageshack.us/img24/912/qgrz.png)

Como ves se muestra la selección del texto.

EDITO: ¿Solución?, seleccionar "0" y con longitud "0", o seleccionar el límite del texto, o diréctamente desactivar el control.

Saludos


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: z3nth10n en 5 Julio 2013, 13:30 pm
Citar
o diréctamente desactivar el control.

Entonces es por eso por lo que uso ReadOnly. :P


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: Eleкtro en 5 Julio 2013, 13:36 pm
Entonces es por eso por lo que uso ReadOnly. :P

Eso no lo soluciona para nada, por algo te lo digo, el texto sigue seleccionado si no lo deseleccionas, pero bueno, si quieres tener la razón, te la doy.

Saludos


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: z3nth10n en 5 Julio 2013, 14:12 pm
No no, pa eso uso tu code. xD

En fin... Por cierto, ya cerrando el tema has visto mi StackOverFlow de la de repu que me llevé ayer? :silbar:
xD Que bueno es saber CSS y HTML y un poco de PHP. Es la ostia los noobs que son algunos. xD Si quieres metete al Skype y charlamos.



Vale ya se a lo que te refieres, el problema es que si lo disableo no puedo cambiar el Backcolor... :silbar:


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: Novlucker en 5 Julio 2013, 15:06 pm
xD Que bueno es saber CSS y HTML y un poco de PHP. Es la ostia los noobs que son algunos. xD Si quieres metete al Skype y charlamos

[Offtopic] No subestimar a los demás, alguien podría estar pensando lo mismo sobre ti en .NET :silbar:

Saludos


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: z3nth10n en 5 Julio 2013, 15:13 pm
[Offtopic] Pues anda que no saber conectar una base de datos con PHP, da mucho de que hablar. Seguro que ahora me saltaréis con algo sobre mí. :P Me lo estoy temiendo. xD
PD: La verdad es que yo al principio no me entero, pero cuando me leo 3 o 4 veces lo que me decis y hago más o menos lo que pedis, pues termino enterandome, pero es que algunos de StackOverFlow, son como yo antes, lo pedían todo hecho. xD


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: Eleкtro en 5 Julio 2013, 15:16 pm
Vale ya se a lo que te refieres, el problema es que si lo disableo no puedo cambiar el Backcolor... :silbar:

Eso es muy contradictorio, en tu snippet original se queda un fondo transparente... ¿ahora para que quieres modificar el color de fondo?.

Bueno, pues si no quieres desactivarlo vas a tener que usar APIS para ocultar el cursor de texto (caret) del control:

Citar
You'll need to use Win32 APIs. Here's what you could do in VB:
Código
  1. 'API declares
  2. Private Declare Function HideCaret Lib "user32" _
  3. (ByVal hwnd As IntPtr) As Integer
  4. Private Declare Function ShowCaret Lib "user32" _
  5. (ByVal hwnd As IntPtr) As Integer
  6. 'hide the caret in myTextBox
  7. Call HideCaret(myTextBox.Handle)
  8. 'show the caret back..
  9. Call ShowCaret(myTextBox.Handle)

and in C#

Código
  1. [DllImport("user32.dll", EntryPoint = "ShowCaret")]
  2. public static extern long ShowCaret(IntPtr hwnd);
  3. [DllImport("user32.dll", EntryPoint = "HideCaret")]
  4. public static extern long HideCaret(IntPtr hwnd);

then make a call to

  
Código:
HideCaret(richtextbox.Handle)

when ever you want to hide it.

EDITO: Lo he probado y parece que no funciona.

EDITO 2: Funciona, para hacerlo funcionar hay que llamar a la función dentro de varios eventos del Richtextbox (por ejemplo MouseHover).

Saludos


Título: Re: Customizar texto 2 o 3 veces dentro del mismo label?
Publicado por: z3nth10n en 5 Julio 2013, 15:23 pm
Es que el control lo estoy usando dentro de un TabPage y por lo tanto pues se queda como se queda. :P
Aunque a mi me igual que puedan seleccionar el texto del RTB pues, no se, creo que aunque lo prefiera así, también me gusta que se quede un poco más profesional :silbar: