Tengo una imagen con un cierto patrón. ¿Cómo lo repito en otra imagen usando GDI? ¿Hay algún método para hacerlo en GDI?Repetir imagen en C#
Respuesta
En C#, se puede crear un TextureBrush que va coloque su imagen donde sea que la use, y luego llene un área con ella. Algo como esto (un ejemplo que llena toda la imagen) ...
// Use `using` blocks for GDI objects you create, so they'll be released
// quickly when you're done with them.
using (TextureBrush brush = new TextureBrush(yourImage, WrapMode.Tile))
using (Graphics g = Graphics.FromImage(destImage))
{
// Do your painting in here
g.FillRectangle(brush, 0, 0, destImage.Width, destImage.Height);
}
Nota, si quieres algo de control sobre cómo es mosaico de la imagen, vas a tener que aprender un poco sobre las transformaciones.
Casi lo olvido (De hecho, me he olvidado un poco): Tendrá que importar System.Drawing
(por Graphics
y TextureBrush
) y System.Drawing.Drawing2D
(por WrapMode
) para que el código anterior para trabajar como es.
No hay ninguna función para pintar una imagen en particular como un "patrón" (pintura en varias ocasiones), pero debe ser muy simple de hacer:
public static void FillPattern(Graphics g, Image image, Rectangle rect)
{
Rectangle imageRect;
Rectangle drawRect;
for (int x = rect.X; x < rect.Right; x += image.Width)
{
for (int y = rect.Y; y < rect.Bottom; y += image.Height)
{
drawRect = new Rectangle(x, y, Math.Min(image.Width, rect.Right - x),
Math.Min(image.Height, rect.Bottom - y));
imageRect = new Rectangle(0, 0, drawRect.Width, drawRect.Height);
g.DrawImage(image, drawRect, imageRect, GraphicsUnit.Pixel);
}
}
}
@sam: le pasa el rectángulo en el objeto 'Gráficos' que desea rellenar con la imagen. –
- 1. Repetir imagen con ImageView en RelativeLayout
- 2. css con imagen de fondo sin repetir la imagen
- 3. Dejar de repetir^C en la terminal
- 4. Generar y repetir el número en C#
- 5. fondo de la imagen: cómo repetir la imagen como fondo en lugar de estirarla
- 6. Uso de ImageMagick para repetir o "mosaico" de una imagen
- 7. 'Repetir' en Haskell?
- 8. sympy set: repetir en intervalos
- 9. ¿Qué es más rápido: repetir estilos o repetir selectores?
- 10. Cómo repetir/repetir el tono de llamada actual en Android desde una aplicación?
- 11. Repetir filas de un data.frame
- 12. MySQL Group_Concat Repetir valores
- 13. Repetir un comando de navegación en vi
- 14. ¿Puedo repetir el comando en irb?
- 15. ¿Cómo puedo repetir cadenas en JavaScript?
- 16. Girar una imagen en C/C++
- 17. Repetir una función cada pocos segundos
- 18. mostrar una imagen en C#
- 19. Borde alrededor imagen en C#
- 20. ¡Repetir el fondo en cocos2d tiene bordes negros!
- 21. CSS: ¿Es posible repetir solo parte de una imagen para usarla como fondo?
- 22. C# copiar pegar una región de imagen en otra imagen
- 23. Reconociendo imagen dentro de la imagen en C#
- 24. Girar imagen matemáticas (C#)
- 25. C++ crear imagen
- 26. Repetir una sola canción en una lista de reproducción
- 27. Repetir una función en C# hasta que ya no arroje una excepción
- 28. ¿Cómo vincular "búsqueda" y "buscar-repetir" a C-f en Emacs?
- 29. Estrategias para repetir gran parte del análisis
- 30. mongodb obtener recuento sin repetir find
¿Qué tipo de patrón? ¿Quieres copiar píxeles? –