C++ Zeichnung Pixel-Frage
Wie machen Fenster oder eher wie clipping-region , wo ich in der Lage zu zeichnen Pixel?
Könnte WinApi, aber ich will nicht mein Projekt um zu schauen wie winapi, so dass es
int main(){}
statt
int WINAPI WinMain(HINSTANCE ...
Habe ich ein Beispiel gefunden, wo ich in der Lage bin zu zeichnen in der Konsole-Fenster
int main()
{
COLORREF color = RGB(255,0,0); //COLORREF to hold the color info
SetConsoleTitle("Pixel In Console?"); //Set text of the console so you can find the window
HWND hwnd = FindWindow(NULL, "Pixel In Console?"); //Get the HWND
HDC hdc = GetDC(hwnd); //Get the DC from that HWND
for( int i = 0 ; i < 50 ; i++ )
{
SetPixel(hdc, 5+i, 12, color); //SetPixel(HDC hdc, int x, int y, COLORREF color)
}
ReleaseDC(hwnd, hdc); //Release the DC
DeleteDC(hdc); //Delete the DC
system("pause");
return(0);
}
aber anstelle der Konsole, die ich zeichnen möchte, auf meine ausgewählte region, die halten den Fokus ( wenn Benutzer darauf klickt, etc ).
Wäre es auch toll, in der Lage zu handhaben, einfache Tastatur - /Maus-Ereignissen für das Programm, aber es ist nicht mein primäres Ziel, hier vielleicht einige andere Bibliotheken von Drittanbietern helfen.
Ich hoffe, ich habe verständlich erklärt, was ich tun will, aber Englisch ist nicht meine Muttersprache, also ich bin sehr Leid für alle Missverständnissen geben.
Ich werde dankbar für jede Hilfe.
So, ich bin mit dieser Seite erste mal, ich bin sorry für den kleinen spam oder nicht-spam-Nachrichten in der falschen stellen, da bin ich mir nicht sicher, wo mein post weiter Nachrichten 🙂
So, was ich schreiben wollte, ist:
"
Ansonsten, wie funktioniert Allegro/SDL erstellen Fenster? Sie verwenden assembler-Aufrufe oder shell? Ich werde viel glücklicher sein, wenn ich in der Lage sein werden zu erstellen, die Fenster, von Grund auf, egal wie viel Arbeit ist es 🙂
"
main() ist Funktion beginnend bei Konsolen-Anwendungen. Sie wollen nicht die Konsole, so dass Sie WinMain.
Sind Sie sicher?
Heffernan: Ja, ich glaube, dass, um korrekt zu sein. Eigentlich
WinMain
ist ein makro, welches ersetzt werden, um die richtige Fenster - main
je nachdem, ob die Anwendung kompiliert in UNICODE-Modus oder ASCII-Modus.Ich bin sicher, Sie könnten schreiben eine Konsole app mit WinMain als Haupt -, und ich bin sicher, Sie könnten schreiben eine Fenster-app mit Haupt-als Haupt-und die entsprechenden Parameter.
InformationsquelleAutor Neomex | 2011-01-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie nicht wie dieser in Windows, das Sie haben, ein Fenster zu erstellen, dann überschreiben WM_PAINT-Nachricht, dann zeichnen, was Sie haben, zu zeichnen, wenn Sie sind aufgerufen, aus dem system. Das ist old-school-Weg, Dinge zu tun, und es ist nicht so schlimm.
Einige interessante und relevante links:
http://www.winprog.org/tutorial/bitmaps.html
http://www.codeproject.com/Articles/66250/BeginPaint-EndPaint-or-GetDC-ReleaseDC.aspx
Wenn Sie wirklich in zu vermeiden, versuchen Sie,popcap. Lernkurve beteiligt es vielleicht steiler, so dass Sie wahrscheinlich wirklich wollen, um stick mit GDI und HWND, egal wie schwierig und verwirrend es Aussehen könnte in der Anfang.
InformationsquelleAutor Daniel Mošmondor
Schlage ich vor, Sie versuchen, OpenGL, gepaart mit entweder GLFW oder glut.
Mit OpenGL werden Sie in der Lage, alle die Dinge, die im Zusammenhang mit Grafik Bearbeitung (2D/3D-rendering), und die Rolle der Bibliothek GLFW zum Beispiel ist um einige Funktionen wie: - Fenster-management, event-management, Timer, threads, etc.
Persönliche note, gehen für GLFW, weil die glut nicht mehr gepflegt wird, denke ich...
InformationsquelleAutor Amokrane Chentir
Lange Geschichte kurz: Sie sollten ein Grafik-framework /widgeting toolkit, um ein Fenster erstellen und von dort aus starten.
Dann, je nachdem, welchen Rahmen Sie verwenden, werden Sie dann erstellen Sie das Fenster und ändern Sie die Pixel entsprechend Ihrer Referenz.
Empfehle ich SDL (kleine, wahrscheinlich genau das, was Sie brauchen), Allegro (ähnlich) oder Qt (largeish).
SDL ist in Ordnung, verwenden Sie
SDL_SetVideoMode(x,y,bpp, SDL_SWSURFACE | SDL_DOUBLEBUFFER)
.Ist die gleiche Sache moeglich mit allegro5 ?
Natürlich. Siehe allegro.cc/manual/5/graphics.html und allegro.cc/manual/5/primitives.html . Das Handbuch ist normalerweise der richtige Ort, um schnell zu beurteilen, das die Funktionen einer Bibliothek.
InformationsquelleAutor Kos
Ansonsten, wie funktioniert Allegro/SDL erstellen Fenster? Sie verwenden assembler-Aufrufe oder shell? Ich werde viel glücklicher sein, wenn ich in der Lage sein werden zu erstellen, die Fenster, von Grund auf, egal wie viel Arbeit ist es 🙂
InformationsquelleAutor Neomex
Problem mit Ihrem code:
Ich versuchte Ihren code, und ich fand, dass die Linie schien angezeigt, in einigen Instanz der Ausführung, aber manchmal, wenn ich ausführen, die rote Linie nicht gefunden! Von dem, was ich verstehe, ist es, weil Sie behielt diese 3 Aussagen:
Aber nur Windows updates, die Ihre Fenster nach dem Namen ein wenig Zeit, so dass, wenn Sie diese Anweisungen ausführen, eine nach der anderen, die
HWND hwnd = FindWindow(NULL, "Pixel In Console?");
Erklärung finden kann wie ein Fenster auf, weil Windows braucht Zeit, um zu aktualisieren, die Titel als erledigt von :SetConsoleTitle("Pixel In Console?");
Lösung:
Sie können entweder halten eine
Sleep(int);
(gehörenwindows.h
) oder-Nutzung:HWND hwnd = FindWindowA("ConsoleWindowClass",NULL); //Get the HWND
statt
SetConsoleTitle("Pixel In Console?"); //Set text of the console so you can find the window
HWND hwnd = FindWindow(NULL, "Pixel In Console?"); //Get the HWND
Hier ist ein Beispiel-Programm:
Dies ist meine erste Antwort. Ich hoffe, dass ich geholfen und es hat eine Menge zu suchen, zu finden, die diese Funktionen
außerdem denke ich, dass ich mehr gelernt von Ihrem Skript, als ich Ihnen gezeigt habe 🙂
hwnd
?Nachdem Sie erfolgreich erstellt Ihre hwnd-variable, ist es egal, was dein Fenster-Titel ist! So fühlen Sie sich frei ändern Sie Ihr Titel🙂
InformationsquelleAutor reubenjohn