ejemplo - bitmap c#
¿Cómo se dibuja una cadena en un mapa de bits en Silverlight? (2)
La pregunta es: ¿por qué quieres? ¿Por qué no usar un TextBlock ?
Si está tratando de generar dinámicamente una imagen, use controles Silverlight / WPF estándar (incluido TextBlock) y renderícelos en un WritableBitmap .
Editar:
Ok, has actualizado y ampliado, lo que me da más para seguir. Lamentablemente, no te va a gustar la respuesta. En primer lugar, tenga en cuenta que Silverlight y WPF en general se basan en vectores y están destinados a ser utilizados como tales. Aunque el lienzo le permite realizar manipulaciones de pseudopíxeles, no puede ser tan preciso como el píxel de la vieja escuela. Este es un factor de tu medio. Si tiene que medir las cosas de la manera que desea medirlas, le sugiero que cree sus imágenes en un servidor remoto y las transmita a su aplicación Silverlight.
Puede calcular el tamaño en pantalla del texto procesado mediante un TextBlock utilizando las propiedades ActualWidth y ActualHeight. Pero solo funciona en un control ya renderizado. Algo como MeasureString simplemente no está disponible en Silverlight. Según la descripción de su aplicación, parte de la interacción del usuario puede lograr lo que desea. El usuario selecciona la imagen, ingresa el texto y se muestra una vista previa. El usuario puede ajustar el ancho y el alto de las diversas áreas de texto hasta que esté satisfecho, momento en el que puede tomar una instantánea utilizando el método de renderizado que me gustaba anteriormente.
En C # normal, es fácil dibujar en un mapa de bits utilizando el método Grpahics.DrawString (). Silverlight parece haber eliminado los objetos de mapa de bits y Graphics ya no está disponible. Entonces ... ¿Cómo tengo la intención de manipular / crear un mapa de bits al usar Silverlight? Si esto ayuda, estoy usando Silverlight 3.
Déjame decirte lo que estoy haciendo. Me están dando una plantilla, básicamente una imagen renderizada previamente. El usuario puede seleccionar entre varias imágenes e ingresar el texto deseado. Luego lo renderizo en la imagen, ajustando el tamaño, etc. dentro de los límites y centrándolo en el área predefinida de la imagen. Si puedo calcular el tamaño (como en el método MeasureString) y luego dibujar la cadena (como en el método Graphics.DrawString) estaría bien. La verdadera pregunta, sin importar por qué quiero poder hacer esto, es ¿se puede hacer?
Lo siguiente puede funcionar, es un poco nebuloso porque aún no lo he intentado.
El objeto que estás buscando es el WritableBitmap
.
Usted crea un árbol visual, por ejemplo, cree su propia Grid
o Canvas
(no lo está agregando a la interfaz de usuario). Agregue a ella la imagen seleccionada y un TextBlock posicionado y dimensionado como prefiera.
Cree un nuevo WritableBitmap
de un tamaño específico o usando la imagen seleccionada para inicializarlo.
Utilice el método WritableBitmap
Render
que le pase la Grid
raíz o el Canvas
.
Ahora tienes un mapa de bits que deberías poder usar para hacer lo que sea que necesites hacer y que en primer lugar requirió saltar todo este aro.