Setpixel
-
COLORREF SetPixel(
HDC hdc,
int X,
int Y,
COLORREF crColor
);
Das habe ich jetzt gefunden wie gesagt ich bin noch neuling
ähm der Device Contect bleibt hdc oder, wie gebe ich die Farbe an kann mir vielleicht mal jemand ein BSP geben?????
-
SetPixel mach ich so:
SetPixel(hdc, xPos, yPos, RGB(0,0,0));
In die RGB-Struktur kommen dann eben die Farbwerte für Rot, Grün und Blau rein (also jeweils 0 bis Maximum 255).
-
ach so: und farbige Linien dürften auch kein großes Problem darstellen: du musst einfach nur einen "farbigen Pinsel" erstellen:
static HPEN Pen; //statisches Pinselobjekt erstellen if (message==WM_PAINT) { hdc=BeginPaint(hWnd, &ps); //den Pinsel initialisieren und Eigenschaften zuweisen: Pen=CreatePen(PS_SOLID, 1, RGB(0,255,0)); //Parameter 2 gibt die Pinselstärke an; //Parameter 3 gibt wieder die Farbe an... //den Pinsel auswählen: SelectObject(hdc, Pen); //die Linie zeichnen: MoveToEx(hdc, 0,0,NULL); LineTo(hdc, 100,100); //also wieder den Handle zum Grafikdevice übergeben //und die Koordinaten //den Pinsel wieder löschen: DeleteObject(Pen); EndPaint(hWnd, &ps); }
[ Dieser Beitrag wurde am 27.06.2002 um 11:48 Uhr von JMD-Software editiert. ]
-
Bei mir funzt das MoveTo und LineTo nicht welche Parameter mussich übergeben bis jetzt habe ich nur x und y übergeben
-
Wenn du nur eine schwarze Linie zeichnen möchtest, kannst du dir das mit dem Pinsel natürlich auch sparen...
MoveToEx(hdc, xPosStart,yPosStart,NULL); LineTo(hdc, xPosEnd, yPosEnd);
-
noch ein Wort zum Zeichenstift: du kannst über den ersten Parameter das Muster verändern:
Pen=CreatePen(PS_SOLID, 1, RGB(0,255,0));
Bisher stand da ja immer PS_SOLID. Als Parameter kämen noch in Frage:
- PS_DASH: - - - - - - -
- PS_DOT: .............
- PS_DASHDOT: -.-.-.-.-.-
- PS_DASHDOTDOT: -..-..-..-..-
- PS_NULL: (unsichtbar)
- PS_INSIDEFRAME
Leider scheinen diese Parameter unter Windows2000 nichts zu bewirken: ich kann nur PS_NULL verwenden. Diese Pinselarten sind jedoch im "Petzold" für Win98-Programmierung beschrieben... einfach mal probieren
[ Dieser Beitrag wurde am 27.06.2002 um 12:00 Uhr von JMD-Software editiert. ]
-
Im Petzold steht, dass zumindest unter win9x die ganzen gestrichelten Arten nur funktionieren, wenn man ale Pinselstärke 0 angibt (ist eh häufig besser als 1 wie bei dir).
-
Hey, stimmt! Mit dem Stärkewert 0 geht es... leider kann man dann eben keine dicken gestrichelten Linien zeichnen
Hätte ja nur ein bisschen weiter lesen müssen .... Sorry
-
Strichstärke 0 ist u.a. besser als 1, weil man dann keine Überraschung erlebt, wenn man das Koordinatensystem verändert.
Wenn man z.B. einstellt, dass eine logische Einheit 2 Pixel sind und dann strichstärke 1 angibt dann ist die Linie effektiv 2 Pixel breit, was für Graphen nicht immer erwünscht ist. Bei Strichstärke 0 bleibt die linie immer 1 Pixel breit.
-
Danke schön läauft alles soweit aber ich möchte eine Variable ausgeben und das funzt dann nicht mehr so mit TextOut()
weil die Fkt. nur strings darstellt (sagt zumindest der Compiler)
Muss ich jetzt eine andere Fkt. nehmen oder wie????
achso die Variable ist eine float!!
Ich weiss mit solchen niederen dingen wollt ihr euch nicht beschäftigen
-
Du kannst eine float Variable mit sprintf in einen char* umwandeln:
#include <cstdio> //... char String[100]; float Float = 1.5333; sprintf(String, "FloatWert : %f", Float);
-
hmmm...
aber wenn ich ´mir das mit TextOut ausgeben lasse zeigt der immert noch ein paar "|||||||||" an weil meine float + der Text nicht hundert stellen.
Hat jemand eine idee ich bin doch nur ein dummer Anfänger
-
Hab durch die Beiträge auch ein Problem lösen können. Danke.
Wenn Du ein 'float' mit TextOut ausgeben willst, muss Du sie vorher
in einen string umwandeln.
Hab dies mit dem Befehl '_ecvt' gemacht. Schau Sie dir mal in der MSDN an.Hier noch ein Programmauszug aus meinem derzeitigen Projekt:
int Punkt,Vorzeichen;
char *text;text=_ecvt(wert,10,&Punkt,&Vorzeichen); //Double->String
if (Punkt==0)
{
text[0]=48;
Punkt=1; //mind. eine Vorkommastelle
}
text[Punkt+2]=0; //eine Nachkommastelle
text[Punkt+1]=text[Punkt]; //zulassen
text[Punkt]=46; //und Punkt setzenHierbei ist 'wert' der float-Wert und 'text' der string.
Mit diesem Programmfetzen erhälst Du einen string mit einer Nachkommastelle.Viel Erfolg weiterhin.
-
Wie wär's mit wsprintf