100 votes

Dessiner un seul pixel sur Windows Forms

Je suis coincé en essayant d'activer un seul pixel sur un Windows Form.

 graphics.DrawLine(Pens.Black, 50, 50, 51, 50); // draws two pixels

graphics.DrawLine(Pens.Black, 50, 50, 50, 50); // draws no pixels
 

L'API devrait vraiment avoir une méthode pour définir la couleur d'un pixel, mais je n'en vois pas.

J'utilise C #.

121voto

Henk Holterman Points 153608

Cela définira un seul pixel:

 e.Graphics.FillRectangle(aBrush, x, y, 1, 1);
 

19voto

Adam Robinson Points 88472

L' Graphics objet n'a pas cela, puisque c'est une abstraction et pourrait être utilisé pour couvrir un vecteur format graphique. Dans ce contexte, la fixation d'un seul pixel n'aurait pas de sens. L' Bitmap format de l'image n'ont GetPixel() et SetPixel(), mais pas un objet graphique construit sur une. Pour votre scénario, votre option semble vraiment comme la seule car il n'y a pas de one-size-fits-all moyen de définir un pixel unique pour un objet graphique (et vous ne savez pas EXACTEMENT ce que c'est, comme votre contrôle/forme pourrait être à double tampon, etc.)

Pourquoi avez-vous besoin pour définir un seul pixel?

19voto

WoodyDRN Points 61

Juste pour montrer le code complet pour la réponse de Henk Holterman:

 Brush aBrush = (Brush)Brushes.Black;
Graphics g = this.CreateGraphics();

g.FillRectangle(aBrush, x, y, 1, 1);
 

11voto

Will Dean Points 25866

Là où je dessine beaucoup de pixels simples (pour différents affichages de données personnalisés), j'ai tendance à les dessiner en bitmap, puis à les blit sur l'écran.

Les opérations Bitmap GetPixel et SetPixel ne sont pas particulièrement rapides, car elles entraînent énormément de contrôles de contournement, mais il est assez facile de créer une classe 'bitmap rapide' permettant d'accéder rapidement à un bitmap.

1voto

Rytmis Points 15848

Apparemment, DrawLine trace une ligne dont la longueur spécifiée est inférieure d’un pixel. Il ne semble pas exister de DrawPoint / DrawPixel / whatnot, mais vous pouvez utiliser DrawRectangle avec width et height définis sur 1 pour dessiner un seul pixel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X