DrawLineで教えてください。

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
初心者爺

DrawLineで教えてください。

#1 投稿記事 by 初心者爺 »

DrawLine(hDC, 2,sx ,sy , , ex, ey,0,0,128)。
以前のバージョンではこんな感じで動作していました。
久々のABでして、更に最新バージョンで動作させたら「文法が違います」との事。
DrawLineの使い方・パラメータを教えてください。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 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
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ゲスト

#3 投稿記事 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
ゲスト

#4 投稿記事 by ゲスト »

これは酷い被りw
リロードすればよかった。失礼しました。
初心者爺

#5 投稿記事 by 初心者爺 »

レスをありがとうございました。
Lineto で挑戦してみたいと思います。
初心者爺

#6 投稿記事 by 初心者爺 »

レスをありがとうございました。
Lineto で挑戦してみたいと思います。
返信する