Punkt zeichnen
-
ich bin jetzt seit Tagen auf der Suche im Net und werde nicht fündig...
Wie kann man einem Punkt (Pixel) in einem Fenster eine Farbe zuordnen?
Mit LineTo und MoveToEx kriegt man Linien, aber wie man einen einzelnen Punkt zeichnet hab ich nicht rausgefunden...Es kann doch hoffentlich nicht der warheit entsprechen, das sowas fehlt...
p.s. Ich kenne die Funktion SetPixel und die ist nicht geeignet, weil die unter umständen nicht nur ins Fenster, sonder allgemein auf den Desktop zeichnet...
-
funktioniert nicht 'ne Linie mit Startpunkt = EndPunkt?
-
das kanns doch nicht sein... na dann, habs bis anhin so gelöst, aber dachte, dass es doch eine elegantere Lösung geben muss, hab ich mich anscheinend geiirt...
-
An was für eine Funktion dachtest du? DrawSinglePixelForArgusMagnusInHisFavouriteColorPlease()?
-
Ich kenne die Funktion SetPixel und die ist nicht geeignet, weil die unter umständen nicht nur ins Fenster, sonder allgemein auf den Desktop zeichnet...
Ob das stimmt? Ich glaube nicht!
-
Argus Magnus schrieb:
... kenne die Funktion SetPixel und die ist nicht geeignet, weil die unter umständen nicht nur ins Fenster, sonder allgemein auf den Desktop zeichnet...
nö, richtiges HWND benutzen
-
Argus Magnus schrieb:
... kenne die Funktion SetPixel und die ist nicht geeignet, weil die unter umständen nicht nur ins Fenster, sonder allgemein auf den Desktop zeichnet...
nö, richtiges HDCbenutzen
-
@rofler: abgesehen davon, das der name etwas zu lang ist, wäre das genau das richtige... so wie ich das sehe, müssen doch funktionen wie LineTo auf sowas aufbauen, ist dann einfach ne Pixelarray...
@ händler: ich bin mir ziemlich sicher, dass ich das richtige DC benutzt habe, aber wenn ich das programm ne weile laufen lasse, zeichnet es die Angegebenen Punkte von der linken oberen Desktop ecke ausgehend und (!) ins Fenster...
-
aber wenn ich das programm ne weile laufen lasse
Das hört sich nach nem GDI Resoucen Leak an, sprich du gibst was nicht korrekt frei.
-
da hilft nur source zeigen, wenn du net klar kommst.
-
Ist noch schwierig source zu zeigen, wenn man nicht weiss wo das problem liegt... ist jetzt schon spät, werde morgen mal was rein posten...
-
void DRAW::head(HWND hwnd, int px, int py, int radius, COLORREF color) { HDC hdc = GetDC(hwnd); double e; for (int y = py-radius; y <= py+radius; y++) { for (int x = px-radius; x <= px+radius; x++) { e = wurzel(2,((px-x)*(px-x)+(py-y)*(py-y))); if ((int)(e+0.5) < radius/2) { SetPixel(hdc, x, y, color); } } } }
-
ReleaseDC ...
-
uiuiui, das ich das nicht gesehen habe...
läuft jetzt zwar flüssiger, aber das Problem besteht weiterhin...
-
Zeig mal das ganze Programme

-
Du kannst auch mal ein assert o.ä. einbauen auf hwnd!=NULL. Bei GetDC(NULL) bekommst du das Desktop-Fenster raus, einen Versuch wär's vielleicht wert.
-
habe ich schon versucht... funktioniert nicht...
das ganze programm ist zu umfangreich, vorallem besteht es aus mehreren Dateien, würde nicht wirklich was bringen, das hier zu posten...
Muss aber schon fast am DC liegen, wenn ich das ganze mit BeginPaint und EndPaint mache, klappts, nur kann ich dann andere Sachen nicht mehr tun..
-
lad einfach das ganze projekt als zip irgendwo hoch, ich mach dir dann kurz den fehler raus
-
Argus Magnus schrieb:
Muss aber schon fast am DC liegen, wenn ich das ganze mit BeginPaint und EndPaint mache, klappts, nur kann ich dann andere Sachen nicht mehr tun..
aaaaaaaaha! Was kannst du denn dann nicht mehr tun?
-
Ich muss mich ein weiteres Mal für meine Dummheit entschuldigen! Meine Beiträge sind nicht nur anmaßend sondern auch völlig nutzlos!

-
Man immer werde ich hier gefaket, aber wenn ich recht überlege, hat er ja recht!
