p0s0l
| Цитата | если в TPen можно указывать Handle pen'а, то можно самому вручную создать геометрический pen, и установить его: TCanvas.Pen.Handle := ExtCreatePen (PS_GEOMETRIC, PS_DASH or PS_ENDCAP_ROUND or PS_JOIN_ROUND, 10, @lb, 0, nil)... А далее рисовать обычными TCanvas.LineTo и т.д....
|
Так просто TCanvas.Pen.Handle значение функции не присвоишь, но даже на чистом API ничего не получается.
Что я делаю не так?
| Код | procedure TForm1.Button1Click(Sender: TObject); var lb:tagLOGBRUSH; DC: hDC; Wnd: HWnd; Pen:hPen; begin Pen :=ExtCreatePen (PS_GEOMETRIC and PS_DASH, 10, lb, 0, nil); Wnd:=Form1.Handle; DC := GetWindowDC(Wnd); SelectObject(DC, Pen); Rectangle(DC, 10, 10, 100, 100);
MoveToEx(DC, 100, 100, nil); LineTo(DC, 200, 200);
DeleteObject(DC, Pen); end;
|
Рисуется обычная сплошная линия шириной в 1 пиксель.
Если вместо
| Код | Pen :=ExtCreatePen (PS_GEOMETRIC and PS_DASH, 10, lb, 0, nil);
|
использовать функцию CreatePen
| Код | Pen:=CreatePen(PS_GEOMETRIC and PS_DASH,10,10);
|
то рисуется линия уже шириной 10, но все равно сплошная
|