Je suis bloqué en essayant d'activer un seul pixel sur un formulaire Windows.
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 #.
Réponses:
Cela définira un seul pixel:
la source
DrawRectangle()
. Si c'est le cas, ilPen.Alignment = PenAlignment.Outset
dessineraPen.Width
un contour épais de pixels autour du rectangle donné. Mais si vous spécifiez,Pen.Alignment = PenAlignment.Inset
il dessinera Pen.Width pixels épais "contour" à l'intérieur du rectangle donné.L'
Graphics
objet n'a pas cela, car c'est une abstraction et pourrait être utilisé pour couvrir un format graphique vectoriel. Dans ce contexte, définir un seul pixel n'aurait pas de sens. LeBitmap
format d'image aGetPixel()
etSetPixel()
, mais pas un objet graphique construit sur un. Pour votre scénario, votre option semble vraiment être la seule car il n'y a pas de moyen unique de définir un seul pixel pour un objet graphique général (et vous ne savez pas exactement ce que c'est, en tant que contrôle / formulaire pourrait être à double tampon, etc.)Pourquoi avez-vous besoin de définir un seul pixel?
la source
Juste pour afficher le code complet de la réponse de Henk Holterman:
la source
Là où je dessine beaucoup de pixels simples (pour divers affichages de données personnalisés), j'ai tendance à les dessiner sur une image bitmap, puis à les envoyer sur l'écran.
Les opérations Bitmap GetPixel et SetPixel ne sont pas particulièrement rapides car elles effectuent énormément de vérifications de limites, mais il est assez facile de créer une classe `` bitmap rapide '' qui a un accès rapide à un bitmap.
la source
Page MSDN sur GetHdc
Je pense que c'est ce que vous recherchez. Vous devrez obtenir le HDC, puis utiliser les appels GDI pour utiliser SetPixel. Notez qu'un COLORREF dans GDI est un DWORD stockant une couleur BGR. Il n'y a pas de canal alpha et ce n'est pas RVB comme la structure Color de GDI +.
Voici une petite section de code que j'ai écrite pour accomplir la même tâche:
la source
Apparemment, DrawLine trace une ligne inférieure d'un pixel à la longueur réelle spécifiée. Il ne semble pas y avoir de DrawPoint / DrawPixel / whatnot, mais à la place, vous pouvez utiliser DrawRectangle avec une largeur et une hauteur définies sur 1 pour dessiner un seul pixel.
la source
Dessiner une ligne 2px à l'aide d'un stylo avec DashStyle.DashStyle.Dot dessine un seul pixel.
la source