Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird veranschaulicht, wie Sie mit GDI Plus eine Linie zeichnen.
Zum Zeichnen einer Linie in Windows GDI+ benötigen Sie ein Graphics-Objekt , ein Pen-Objekt und ein Color-Objekt . Das Graphics-Objekt stellt die DrawLine-Methode bereit, und das Pen-Objekt enthält Attribute der Linie, z. B. Farbe und Breite. Die Adresse des Pen-Objekts wird als Argument an die DrawLine-Methode übergeben.
Das folgende Programm, das eine Linie von (0, 0) zu (200, 100) zeichnet, besteht aus drei Funktionen: WinMain, WndProc und OnPaint. Die WinMain - und WndProc-Funktionen stellen den grundlegenden Code bereit, der für die meisten Windows-Anwendungen üblich ist. In der WndProc-Funktion ist kein GDI+-Code vorhanden. Die WinMain-Funktion verfügt über eine kleine Menge an GDI+-Code, nämlich die erforderlichen Aufrufe von GdiplusStartup und GdiplusShutdown. Der GDI+-Code, der tatsächlich ein Graphics-Objekt erstellt und eine Linie zeichnet, befindet sich in der OnPaint-Funktion .
Die OnPaint-Funktion empfängt ein Handle an einen Gerätekontext und übergibt dieses Handle an einen Grafikkonstruktor . Das an den Pen-Konstruktor übergebene Argument ist ein Verweis auf ein Color-Objekt . Die vier Zahlen, die an den Farbkonstruktor übergeben werden, stellen die Alpha-, Rot-, Grün- und Blaukomponenten der Farbe dar. Die Alphakomponente bestimmt die Transparenz der Farbe; 0 ist vollständig transparent und 255 vollständig undurchsichtig. Die vier Zahlen, die an die DrawLine-Methode übergeben werden, stellen den Startpunkt (0, 0) und den Endpunkt (200, 100) der Linie dar.
#include <stdafx.h>
#include <windows.h>
#include <objidl.h>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib,"Gdiplus.lib")
VOID OnPaint(HDC hdc)
{
Graphics graphics(hdc);
Pen pen(Color(255, 0, 0, 255));
graphics.DrawLine(&pen, 0, 0, 200, 100);
}
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, INT iCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASS wndClass;
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
// Initialize GDI+.
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = WndProc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance;
wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = TEXT("GettingStarted");
RegisterClass(&wndClass);
hWnd = CreateWindow(
TEXT("GettingStarted"), // window class name
TEXT("Getting Started"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL); // creation parameters
ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
GdiplusShutdown(gdiplusToken);
return msg.wParam;
} // WinMain
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch(message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
OnPaint(hdc);
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
} // WndProc
Beachten Sie den Aufruf von GdiplusStartup in der WinMain-Funktion . Der erste Parameter der GdiplusStartup-Funktion ist die Adresse eines ULONG_PTR. GdiplusStartup füllt diese Variable mit einem Token, das später an die GdiplusShutdown-Funktion übergeben wird. Der zweite Parameter der GdiplusStartup-Funktion ist die Adresse einer GdiplusStartupInput-Struktur . Der vorherige Code basiert auf dem GdiplusStartupInput-Standardkonstruktor , um die Strukturmember entsprechend festzulegen.