デスクトップに線・点を描画 <TOP>
CreatePen
論理ペンを作成
LineTo
現在の位置から終点までを直線で描画
CreateDC
指定されたデバイスのデバイスコンテキストを、指定された名前で作成
CreateCompatibleDC 指定されたデバイスコンテキストに関連するデバイスと互換性のあるメモリデバイスコンテキストを作成
DeleteDC
指定されたデバイスコンテキストを削除
SelectObject 指定されたデバイスコンテキストのオブジェクトを選択
DeleteObject 論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放
SetPixel
指定した座標に点を配置
CreateCompatibleBitmap
デバイスコンテキストと互換性のあるビットマップを作成
BitBlt
ビットブロック転送を行う。コピー元からコピー先のデバイスコンテキストへ、指定された長方形内の各ピクセルの色データをコピー
'================================================================ '= デスクトップに線・点を描画 '= (CreatePen3.bas) '================================================================ #include "Windows.bi" ' 論理ペンを作成 Declare Function Api_CreatePen& Lib "gdi32" Alias "CreatePen" (ByVal nPenStyle&, ByVal nWidth&, ByVal crColor&) ' 現在の位置から終点までを直線で描画 Declare Function Api_LineTo& Lib "gdi32" Alias "LineTo" (ByVal hDC&, ByVal x&, ByVal y&) ' 指定されたデバイスのデバイスコンテキストを、指定された名前で作成 Declare Function Api_CreateDC& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName$, ByVal lpDeviceName$, ByVal lpOutput$, ByVal lpInitData As Any) ' 指定されたデバイスコンテキストに関連するデバイスと互換性のあるメモリデバイスコンテキストを作成 Declare Function Api_CreateCompatibleDC& Lib "gdi32" Alias "CreateCompatibleDC" (ByVal hDC&) ' 指定されたデバイスコンテキストを削除 Declare Function Api_DeleteDC& Lib "gdi32" Alias "DeleteDC" (ByVal hDC&) ' 指定されたデバイスコンテキストのオブジェクトを選択 Declare Function Api_SelectObject& Lib "gdi32" Alias "SelectObject" (ByVal hDC&, ByVal hObject&) ' 論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放 Declare Function Api_DeleteObject& Lib "gdi32" Alias "DeleteObject" (ByVal hObject&) ' 指定した座標に点を配置する Declare Function Api_SetPixel& Lib "gdi32" Alias "SetPixel" (ByVal hDC&, ByVal X&, ByVal Y&, ByVal crColor&) ' デバイスコンテキストと互換性のあるビットマップを作成 Declare Function Api_CreateCompatibleBitmap& Lib "gdi32" Alias "CreateCompatibleBitmap" (ByVal hDC&, ByVal nWidth&, ByVal nHeight&) ' ビットブロック転送を行う。コピー元からコピー先のデバイスコンテキストへ、指定された長方形内の各ピクセルの色データをコピー Declare Function Api_BitBlt& Lib "gdi32" Alias "BitBlt" (ByVal hDestDC&, ByVal X&, ByVal Y&, ByVal nWidth&, ByVal nHeight&, ByVal hSrcDC&, ByVal xSrc&, ByVal ySrc&, ByVal dwRop&) #define SRCCOPY &HCC0020 'そのまま転送 Var Shared Radio1 As Object Var Shared Radio2 As Object Var Shared Button1 As Object Radio1.Attach GetDlgItem("Radio1") : Radio1.SetFontSize 14 Radio2.Attach GetDlgItem("Radio2") : Radio2.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Function Index bdecl () As Integer Function Index() Index = Val(Mid$(GetDlgRadioSelect("Radio1"), 6)) -1 End Function '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hDC As Long Var hDCBuffer As Long Var hBmp As Long Var hPen As Long Var hObject As Long Var DeskWidth As Long Var DeskHeight As Long Var i As Long Var Col As Long Var Max As Long Var Ret As Long Max = 5000 + Index * 100000 'デスクトップサイズを取得 DeskWidth = GetDeviceCaps(8) DeskHeight = GetDeviceCaps(10) 'デスクトップにビットマップを描画 hDC = Api_CreateDC("DISPLAY", ByVal 0, ByVal 0, 0) hDCBuffer = Api_CreateCompatibleDC(hDC) hBmp = Api_CreateCompatibleBitmap(hDC, DeskWidth, DeskHeight) Ret = Api_SelectObject(hDCBuffer, hBmp) Ret = Api_BitBlt(hDCBuffer, 0, 0, DeskWidth, DeskHeight, hDC, 0, 0, SRCCOPY) '色・線・点を設定 For i = 1 To Max Col = RGB(CInt(255 * Rnd), CInt(255 * Rnd), CInt(255 * Rnd)) If Index = 0 Then hPen = Api_CreatePen(0, 10, Col) hObject = Api_SelectObject(hDC, hPen) Ret = Api_LineTo(hDC, CInt(DeskWidth * Rnd), CInt(DeskHeight * Rnd)) Ret = Api_DeleteObject(hObject) Else Ret = Api_SetPixel(hDC, CInt(DeskWidth * Rnd), CInt(DeskHeight * Rnd), Col) End If Next i 'デスクトップに描画 Ret = Api_BitBlt(hDC, 0, 0, DeskWidth, DeskHeight, hDCBuffer, 0, 0, SRCCOPY) 'デバイスコンテキストの解放 Ret = Api_DeleteDC(hDCBuffer) Ret = Api_DeleteDC(hDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End