ページ 1 / 1
DrawLineで教えてください。
Posted: 2007年7月07日(土) 14:44
by 初心者爺
DrawLine(hDC, 2,sx ,sy , , ex, ey,0,0,128)。
以前のバージョンではこんな感じで動作していました。
久々のABでして、更に最新バージョンで動作させたら「文法が違います」との事。
DrawLineの使い方・パラメータを教えてください。
Posted: 2007年7月07日(土) 20:23
by konisi
DrawLineは(AB2.61,AB2.62,AB3.13,AB4.13,AB4.23で試しましたが)宣言されていないので、Include\basic\prompt.sbpを参考にLineToとMoveToExを使うか、或いは(急造ですが)下の関数を使ってみてください。
コード: 全て選択
Sub DrawLine(hDC As HDC,sx As Long,sy As Long,ex As Long,ey As Long,ColorCode As Long,IsBasicColor As Long)
'引数"IsBasicColor"が非0の時、ColorCodeはGetBasicColorを参照する。それ以外のときはRGB値として処理する。
'元のDrawLine関数のパラメータが不明だったので、必要なパラメータを再配置した。
Dim hPen As HPEN,hOldPen As VoidPtr
If IsBasicColor then ColorCode=GetBasicColor(ColorCode)
hPen=CreatePen(PS_SOLID,1,ColorCode)
hOldPen=SelectObject(hDC,hPen)
MoveToEx(hDC,sx,sy,ByVal NULL)
LineTo(hDC,ex,ey)
SetPixel(hDC,ex,ey,ColorCode)
SelectObject(hDC,hOldPen)
DeleteObject(hPen)
End Sub
Posted: 2007年7月07日(土) 20:25
by ゲスト
DrawLineなる関数は見たことが無い(昔のABの隠し関数?)ので、パラメータから予想して自作してみました
2番目の引数がなんだか分からなかったのでペンの幅にしてあります
最後の3つの引数はそれぞれR成分、G成分、B成分です
コード: 全て選択
Function DrawLine(hDC As HDC,width As Long,sx As Long,sy As Long,ex As Long,ey As Long,r As Byte,g As Byte,b As Byte) As Long
Dim hPen As HPEN
hPen = CreatePen(PS_SOLID,width,RGB(r,g,b))
If hPen Then
hPen = SelectObject(hDC,hPen)
If MoveToEx(hDC,sx,sy,ByVal NULL) Then
If LineTo(hDC,ex,ey) Then DrawLine=TRUE
End If
hPen = SelectObject(hDC,hPen)
DeleteObject(hPen)
End If
End Function
Posted: 2007年7月07日(土) 20:27
by ゲスト
これは酷い被りw
リロードすればよかった。失礼しました。
Posted: 2007年7月08日(日) 18:13
by 初心者爺
レスをありがとうございました。
Lineto で挑戦してみたいと思います。
Posted: 2007年7月08日(日) 18:14
by 初心者爺
レスをありがとうございました。
Lineto で挑戦してみたいと思います。