Gast
2006-06-15, 16:03:49
Hi Leute,
Bei mir steht demnächst an, eine für VC++ 6 mit MFC geschriebene Klasse, die Zeichenoperationen mit Hilfe von Device Contexts (unter Verwendung der Klassen CDC, CPen und CBrush) durchführt, auf Visual Studio .NET zu portieren. Nur habe ich gar keine so rechte Ahnung, wie Grafik unter .NET gehandlet wird, und habe auch in der MSDN noch nichts so rechtes dazu gefunden (für Win32 API und MFC gibt es jeweils die Rubriken "Graphics and Multimedia", für .NET scheint es die nicht zu geben).
Soweit ich das bisher feststellen konnte, hat sich M$ in VS .NET sehr stark von den Konzepten aus früheren VS-Versionen entfernt und einen Fensterdesigner wie auch eine Klassenbibliothek entwickelt, die beide ziemlich 1:1 von Borland Delphi und der VCL abgekupfert zu sein scheinen.
Deswegen dachte ich, für Grafikoperationen würde es dann vielleicht eine Art TCanvas-Klasse geben. Dem scheint aber nicht so zu sein.
Kennt sich jemand mit Grafik unter VS .NET aus und kann mir da weiter helfen?
Vielleicht anhand eines kleinen Codebeispiels:
So sähe es unter der Win32 API aus:
HWND hForm1;
//...
HDC hdc = GetDC(hForm1);
HPEN hpen = CreatePen(PS_SOLID,1,crColor);
HPEN holdpen = (HPEN) SelectObject(hdc, hpen);
// Zeichenstift nach (x0,y0) bewegen
MoveToEx(hdc, x0, y0, NULL);
// Linie nach (x1,y1) zeichnen
LineTo(hdc, x1, y1);
so unter der MFC:
CWnd cForm1;
//...
CDC *pdc = cForm1.GetDC();
CPen cpen, *poldpen;
cpen.CreatePen(PS_SOLID,1,crColor);
poldpen = pdc->SelectObject(&cpen);
// Zeichenstift nach (x0,y0) bewegen
pdc->MoveTo(x0,y0);
// Linie nach (x1,y1) zeichnen
pdc->LineTo(x1,y1);
und so unter Delphi/VCL:
var Form1: TForm1;
//...
Form1.Canvas.pen.Style := psSolid;
Form1.Canvas.pen.Color := crColor;
Form1.Canvas.pen.Width := 1;
// Zeichenstift nach (x0,y0) bewegen
Form1.Canvas.MoveTo(x0,y0);
// Linie nach (x1,y1) zeichnen
Form1.Canvas.LineTo(x1,y1);
wie würde das in VS .NET (in C++) aussehen?
Bei mir steht demnächst an, eine für VC++ 6 mit MFC geschriebene Klasse, die Zeichenoperationen mit Hilfe von Device Contexts (unter Verwendung der Klassen CDC, CPen und CBrush) durchführt, auf Visual Studio .NET zu portieren. Nur habe ich gar keine so rechte Ahnung, wie Grafik unter .NET gehandlet wird, und habe auch in der MSDN noch nichts so rechtes dazu gefunden (für Win32 API und MFC gibt es jeweils die Rubriken "Graphics and Multimedia", für .NET scheint es die nicht zu geben).
Soweit ich das bisher feststellen konnte, hat sich M$ in VS .NET sehr stark von den Konzepten aus früheren VS-Versionen entfernt und einen Fensterdesigner wie auch eine Klassenbibliothek entwickelt, die beide ziemlich 1:1 von Borland Delphi und der VCL abgekupfert zu sein scheinen.
Deswegen dachte ich, für Grafikoperationen würde es dann vielleicht eine Art TCanvas-Klasse geben. Dem scheint aber nicht so zu sein.
Kennt sich jemand mit Grafik unter VS .NET aus und kann mir da weiter helfen?
Vielleicht anhand eines kleinen Codebeispiels:
So sähe es unter der Win32 API aus:
HWND hForm1;
//...
HDC hdc = GetDC(hForm1);
HPEN hpen = CreatePen(PS_SOLID,1,crColor);
HPEN holdpen = (HPEN) SelectObject(hdc, hpen);
// Zeichenstift nach (x0,y0) bewegen
MoveToEx(hdc, x0, y0, NULL);
// Linie nach (x1,y1) zeichnen
LineTo(hdc, x1, y1);
so unter der MFC:
CWnd cForm1;
//...
CDC *pdc = cForm1.GetDC();
CPen cpen, *poldpen;
cpen.CreatePen(PS_SOLID,1,crColor);
poldpen = pdc->SelectObject(&cpen);
// Zeichenstift nach (x0,y0) bewegen
pdc->MoveTo(x0,y0);
// Linie nach (x1,y1) zeichnen
pdc->LineTo(x1,y1);
und so unter Delphi/VCL:
var Form1: TForm1;
//...
Form1.Canvas.pen.Style := psSolid;
Form1.Canvas.pen.Color := crColor;
Form1.Canvas.pen.Width := 1;
// Zeichenstift nach (x0,y0) bewegen
Form1.Canvas.MoveTo(x0,y0);
// Linie nach (x1,y1) zeichnen
Form1.Canvas.LineTo(x1,y1);
wie würde das in VS .NET (in C++) aussehen?