Android - Dibujar: texto

Iniciado por TickTack, 19 Febrero 2019, 15:42 PM

0 Miembros y 1 Visitante están viendo este tema.

TickTack

Hola a todos,

quería preguntarles que significa este código:


Paint pincel1 = new Paint();
Typeface tf = Typeface.create(Typeface.SERIF, Typeface.ITALIC);
pincel1.setTypeface(tf);
tf = Typeface.create(Typeface.SERIF, Typeface.ITALIC
                    | Typeface.BOLD);
pincel1.setTypeface(tf);


Osea: El pincel tiene dos tipos de letras al mismo tiempo? Si es así... cómo es eso posible?
Y: Al estar separado (en la segunda creación del Typeface) el segundo parámetro por otro parámetro mediante un |... quiere decir eso que aleatoriamente se eligira un Typeface?

Gracias y saludos
Citar
"Ninguna mentira puede inventarse lo suficientemente patán: el pueblo hispanohablante la cree. Por una consigna que se les dio, persiguieron a sus compatriotas con mayor encarnizamiento que a sus verdaderos enemigos."

BloodSharp

Cita de: TickTack en 19 Febrero 2019, 15:42 PMOsea: El pincel tiene dos tipos de letras al mismo tiempo? Si es así... cómo es eso posible?
No, no puede manejar 2 fuentes tipográficas al mismo tiempo, de hecho en la segunda asignación del "Manejador" paint esta la sobre-escribe...

Cita de: TickTack en 19 Febrero 2019, 15:42 PMY: Al estar separado (en la segunda creación del Typeface) el segundo parámetro por otro parámetro mediante un |... quiere decir eso que aleatoriamente se eligira un Typeface?

No, quiere decir que la fuente tendrá ambas propiedades negrita e itálica al mismo tiempo.


B#



TickTack

Hola BloodSharp,

muchas gracias por tu respuesta.

Pero... claro... que estupidez de mi parte haber hecho esto pregunta. Bold significa negrita e Italic significa cursiva. Y yo creí que se trataba de fuentes....


Gracias y saludos
Citar
"Ninguna mentira puede inventarse lo suficientemente patán: el pueblo hispanohablante la cree. Por una consigna que se les dio, persiguieron a sus compatriotas con mayor encarnizamiento que a sus verdaderos enemigos."

TickTack

Hola BloodSharp de nuevo,

se me acaba de ocurrir otra pregunta: cómo procesara el método create de la clase Typeface el segundo parámetro si se le envía dos propiedades separados por un |? No podrá procesar solo una propiedad?


Gracias y saludos
Citar
"Ninguna mentira puede inventarse lo suficientemente patán: el pueblo hispanohablante la cree. Por una consigna que se les dio, persiguieron a sus compatriotas con mayor encarnizamiento que a sus verdaderos enemigos."

BloodSharp

Cita de: TickTack en 19 Febrero 2019, 18:57 PMcómo procesara el método create de la clase Typeface el segundo parámetro si se le envía dos propiedades separados por un |? No podrá procesar solo una propiedad?

Puede verificar cada propiedad con operaciones "and"...


B#



TickTack

Hola BloodSharp,

Citar
Puede verificar cada propiedad con operaciones "and"...

Y cómo la hace?
Cómo sabe cuantas propiedades se envió en el segundo parámetro?


Gracias y saludos
Citar
"Ninguna mentira puede inventarse lo suficientemente patán: el pueblo hispanohablante la cree. Por una consigna que se les dio, persiguieron a sus compatriotas con mayor encarnizamiento que a sus verdaderos enemigos."

Serapis

Parece mentira que a esta altura, no sepas el significado de 'expresión'.

x = 5
x = (x + 5)
x = ((x + 5) * b)
x = ((x + 5) + (b and 1))


Todo son expresiones, hay una única asignación, pero es la última, previamente debe resolverse cada operación de la expresión, solo entonces se hace la asignación final.
En una función, un parámetro es lo mismo que en una asignación... si el parámetro fuera x, da lo msimo hacer:
x = ((x + 5) + (b and 1))
suma = sumar(20, x)


Que hacer:
suma = Sumar(20, ((x + 5) + (b and 1)))

El segundo parámetro es una expresión, cualquier variable por sí misma también es una expresión...Las formas típicas en que varias constantes se aúnan es porque cada constante típicamente afecta un solo bit (o más)
un sencillo ejemplo con las características d eun texto:
enumeracion FormatoTexto
    FORMATO_NEGRITA = 1       // 00000001
    FORMATO_INCLINADO = 2    // 00000010
    FORMATO_SUBRAYADO = 4  // 00000100
    FORMATO_TACHADO = 8     // 00001000
    FORMATO_COLOR = 16      // 00010000
    // ...
fin enumeracion

string texto = "Lindo pulgoso"
entero lineaX = 23
FormatoTexto ft = FORMATO_NEGRITA or FORMATO_SUBRAYADO  // 1 or 4 = 5

Escribir(texto, lineaX, ft)


En este otro ejemplo, esta llamada es prácticamente equivalente a la anterior... vale igualmente no poner variables, sino los valores constantes...
La variación rea a tener en cuenta es tan solo que debe tenerse en cuenta que en caso de que sean parámetros por referencia, se pierden valores que se dieren de vuelta. Y por tanto si se precisan tener de vuelta valores cambiados, deben pasarse variables y no los valores (constantes)...
Escribir("Lindo pulgoso", 23, FORMATO_NEGRITA or FORMATO_SUBRAYADO )



TickTack

Hola NEBIRE,

todo esto es muy guay. Muchas gracias por tu explicación. Especialmente, por esta frase, que para mi era la frase clave:

Citar
Las formas típicas en que varias constantes se aúnan es porque cada constante típicamente afecta un solo bit (o más)


Gracias y saludos
Citar
"Ninguna mentira puede inventarse lo suficientemente patán: el pueblo hispanohablante la cree. Por una consigna que se les dio, persiguieron a sus compatriotas con mayor encarnizamiento que a sus verdaderos enemigos."