Для свой программы захотелось изменить отображаемые линии.
If OpenWindow(0, 0, 0, 640, 480, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0, 640, 480)
hdc=StartDrawing(CanvasOutput(0))
;Box(0,0,640,480,0)
If hdc
hpen1=CreatePen_(#PS_SOLID,1,RGB(0,0,0))
SelectObject_(hdc,hpen1)
MoveToEx_(hdc,50,30,0)
LineTo_(hdc,300,30)
DeleteObject_(hpen1)
hpen2=CreatePen_(#PS_DASH,1,RGB(0,0,0))
SelectObject_(hdc,hpen2)
MoveToEx_(hdc,50,50,0)
LineTo_(hdc,300,50)
SelectObject_(hdc,hpen2)
MoveToEx_(hdc,50,70,0)
LineTo_(hdc,300,70)
DeleteObject_(hpen2)
hpen3=CreatePen_(#PS_DOT,1,RGB(0,0,0))
SelectObject_(hdc,hpen3)
MoveToEx_(hdc,50,90,0)
LineTo_(hdc,300,90)
DeleteObject_(hpen3)
hpen4=CreatePen_(#PS_DASHDOT,1,RGB(0,0,0))
SelectObject_(hdc,hpen4)
MoveToEx_(hdc,50,110,0)
LineTo_(hdc,300,110)
DeleteObject_(hpen4)
hpen5=CreatePen_(#PS_DASHDOTDOT,1,RGB(0,0,0))
SelectObject_(hdc,hpen5)
MoveToEx_(hdc,50,130,0)
LineTo_(hdc,300,130)
DeleteObject_(hpen5)
StopDrawing()
Else
Debug "err draw"
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
CanvasGadget(0, 0, 0, 640, 480)
hdc=StartDrawing(CanvasOutput(0))
;Box(0,0,640,480,0)
If hdc
hpen1=CreatePen_(#PS_SOLID,1,RGB(0,0,0))
SelectObject_(hdc,hpen1)
MoveToEx_(hdc,50,30,0)
LineTo_(hdc,300,30)
DeleteObject_(hpen1)
hpen2=CreatePen_(#PS_DASH,1,RGB(0,0,0))
SelectObject_(hdc,hpen2)
MoveToEx_(hdc,50,50,0)
LineTo_(hdc,300,50)
SelectObject_(hdc,hpen2)
MoveToEx_(hdc,50,70,0)
LineTo_(hdc,300,70)
DeleteObject_(hpen2)
hpen3=CreatePen_(#PS_DOT,1,RGB(0,0,0))
SelectObject_(hdc,hpen3)
MoveToEx_(hdc,50,90,0)
LineTo_(hdc,300,90)
DeleteObject_(hpen3)
hpen4=CreatePen_(#PS_DASHDOT,1,RGB(0,0,0))
SelectObject_(hdc,hpen4)
MoveToEx_(hdc,50,110,0)
LineTo_(hdc,300,110)
DeleteObject_(hpen4)
hpen5=CreatePen_(#PS_DASHDOTDOT,1,RGB(0,0,0))
SelectObject_(hdc,hpen5)
MoveToEx_(hdc,50,130,0)
LineTo_(hdc,300,130)
DeleteObject_(hpen5)
StopDrawing()
Else
Debug "err draw"
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
If OpenWindow(0, 0, 0, 640, 480, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0, 640, 480)
lb.LOGBRUSH
;// Инициализация кисти пера.
lb\lbStyle = #BS_SOLID;
lb\lbColor = RGB(255,0,0);
lb\lbHatch = 0 ;
hdc=StartDrawing(CanvasOutput(0))
;Box(0,0,640,480,0)
If hdc
For i=0 To 5
Select i
Case 0:dwPenStyle=#PS_DASH
Case 1:dwPenStyle=#PS_DASHDOT
Case 2:dwPenStyle=#PS_DOT
Case 3:dwPenStyle=#PS_INSIDEFRAME
Case 4:dwPenStyle=#PS_NULL
Case 5:dwPenStyle=#PS_SOLID
EndSelect
; HPEN ExtCreatePen(
; DWORD dwPenStyle, // pen style
; DWORD dwWidth, // pen width
; CONST LOGBRUSH *lplb, // pointer To Structure For brush attributes
; DWORD dwStyleCount, // length of Array containing custom style bits
; CONST DWORD *lpStyle // optional Array of custom style bits
; );
hPen = ExtCreatePen_(#PS_COSMETIC | dwPenStyle,1, @lb, 0, 0);
hPenOld = SelectObject_(hdc, hPen);
MoveToEx_(hdc, i * 20, 0, 0);
LineTo_(hdc, i * 20, 480);
SelectObject_(hdc, hPenOld);
DeleteObject_(hPen);
Next i
For i=0 To 5
Select i
Case 0:lbh=#HS_BDIAGONAL
Case 1:lbh=#HS_CROSS
Case 2:lbh=#HS_DIAGCROSS
Case 3:lbh=#HS_FDIAGONAL
Case 4:lbh=#HS_HORIZONTAL
Case 5:lbh=#HS_VERTICAL
EndSelect
lb\lbStyle = #BS_HATCHED;
lb\lbColor = RGB(0,0,255);
lb\lbHatch = lbh
hPen = ExtCreatePen_(#PS_GEOMETRIC, 5, @lb, 0, 0);
hPenOld = SelectObject_(hdc, hPen);
MoveToEx_(hdc, 150 + (i * 20), 0, 0);
LineTo_(hdc, 150 + (i * 20), 480);
SelectObject_(hdc, hPenOld);
DeleteObject_(hPen);
Next i
StopDrawing()
Else
Debug "err draw"
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
If OpenWindow(0, 0, 0, 640, 480, "Custom Brush", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0, 640, 480)
hBtm = CreateBitmap_(8, 8, 1, 1, ?bits8)
hdc=StartDrawing(CanvasOutput(0))
;Box(0,0,640,480,0)
If hdc
hCustomBrush = CreatePatternBrush_(hBtm);
hOldBrush = SelectObject_(hdc, hCustomBrush);
SelectObject_(hdc, GetStockObject_(#NULL_PEN));
Rectangle_(hdc, 20, 20, 250, 160);
SelectObject_(hdc, hOldBrush);
DeleteObject_(hCustomBrush);
SelectObject_(hdc, GetStockObject_(#BLACK_PEN));
StopDrawing()
Else
Debug "err draw"
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
DataSection
bits8:
Data.l $111111ff, $ffffffff, $ffffffff, $ffffffff,$00000000, $00000000, $00000000, $00000000
Но от линий пришлось отказаться, так как у GDI нет режима рисования, как в PureBasic - наложение цвета операцией XOR.
Комментарии
Отправить комментарий