Je veux créer un bitmap de taille 160 * 160 et le scinder en quatre carrés avec chaque carré rempli d'une seule couleur. Comment cela peut-il être fait?Remplissage de bitmap C#
3
A
Répondre
3
Vous pouvez essayer quelque chose comme
using (Bitmap b = new Bitmap(160, 160))
using (Graphics g = Graphics.FromImage(b))
{
g.FillRectangle(new SolidBrush(Color.Blue), 0, 0, 79, 79);
g.FillRectangle(new SolidBrush(Color.Red), 79, 0, 159, 79);
g.FillRectangle(new SolidBrush(Color.Green), 0, 79, 79, 159);
g.FillRectangle(new SolidBrush(Color.Yellow), 79, 79, 159, 159);
b.Save(@"c:\test.bmp");
}
8
Juste au cas où quelqu'un a besoin d'une méthode de résolution de ce problème spécifique d'une manière plus générale, j'ai écrit une méthode d'extension, en couleurs et un entier qui indique combien de tuiles il doit séparer dans la direction x et y:
public static void FillImage(this Image img, int div, Color[] colors)
{
if (img == null) throw new ArgumentNullException();
if (div < 1) throw new ArgumentOutOfRangeException();
if (colors == null) throw new ArgumentNullException();
if (colors.Length < 1) throw new ArgumentException();
int xstep = img.Width/div;
int ystep = img.Height/div;
List<SolidBrush> brushes = new List<SolidBrush>();
foreach (Color color in colors)
brushes.Add(new SolidBrush(color));
using (Graphics g = Graphics.FromImage(img))
{
for (int x = 0; x < div; x++)
for (int y = 0; y < div; y++)
g.FillRectangle(brushes[(y * div + x) % colors.Length],
new Rectangle(x * xstep, y * ystep, xstep, ystep));
}
}
les quatre carrés, la OP désirés serait produit avec:
new Bitmap(160, 160).FillImage(2, new Color[]
{
Color.Red,
Color.Blue,
Color.Green,
Color.Yellow
});
Questions connexes
- 1. C++ remplissage boost matrice
- 2. objets en C# Remplissage
- 3. bitmap interpolation C#
- 4. ComboBox Remplissage avec LINQ C#
- 5. C# Rotation Bitmap 90 degrés
- 6. Fichier Mappé Mémoire C# - Bitmap
- 7. Algorithmes de remplissage d'inondation
- 8. Remplissage de la grille en C# 3.5
- 9. Conversion de PixelFormats bitmap en C#
- 10. Lecture de couleurs bitmap bitmap monochrome
- 11. C# label AutoSize ajoute un remplissage
- 12. manipulation bitmap efficace dans WPF (C#)
- 13. Verrouillage d'un bitmap GDI + en C++ natif?
- 14. Créer une police bitmap en utilisant C#
- 15. Enregistrement d'images bitmap dans WPF via C#
- 16. Optimisation d'une classe matricielle/bitmap C++
- 17. Travailler avec Image et Bitmap dans C#?
- 18. Fenêtre bitmap C++ dessiner du texte
- 19. Conversion en Bitmap PixelFormat indexé en C#
- 20. C#: Bitmap Création en octets tableau
- 21. Images bitmap C#, tableaux d'octets et flux!
- 22. Rendu VML en bitmap en C#
- 23. comment convertir bitmap en intptr en C#
- 24. Remplissage dynamique de RadiobuttonList
- 25. mode préféré de remplissage d'un vecteur C++ de structs
- 26. tableau de remplissage C avec des pointeurs de classe personnalisée
- 27. désactiver la valeur de remplissage de vecteur sur redimensionner? C++
- 28. Remplissage de checkedListBox à l'aide de l'application C# windows
- 29. Chaîne de remplissage à gauche
- 30. C#: remplissage d'une interface utilisateur à l'aide de threads distincts
Il est éteint par un, Droite et Bas ne sont pas dessinés. Juste divisez par 2. –
Les quatrième et cinquième paramètres de 'FillRectangle' sont la largeur et la hauteur pas 'end-x/y-values', donc il devrait être 80 au lieu de 159. Et comme Hans Passant a dit, 80 au lieu de 79 paramètres x et y. –