ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月28日(木) 19:28

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2005年7月17日(日) 21:53 
オフライン

登録日時: 2005年7月17日(日) 09:36
記事: 36
お住まい: 千葉県松戸市
球体を描画します。
コード:
Function CircleX(hDC As Long,x As Long,y As Long,r As Long,_
      hR,hG,hB,dR,dG,dB)As Long
   Dim i As Long
   Dim Pen As Long,OldPen As Long
   Dim Brs As Long,OldBrs As Long
   For i=0 To r
      Brs=CreateSolidBrush(RGB((hR-dR)/(r)*(i)+dR,(hG-dG)/(r)*(i)+dG,(hB-dB)/(r)*(i)+dB))
      Pen=CreatePen(PS_SOLID,1,RGB((hR-dR)/(r)*(i)+dR,(hG-dG)/(r)*(i)+dG,(hB-dB)/(r)*(i)+dB))
      OldBrs=SelectObject(hDC,Brs)
      OldPen=SelectObject(hDC,Pen)
      Ellipse(hDC,x-(r-i),y-(r-i),x+(r-i),y+(r-i))
      SelectObject(hDC,OldBrs)
      DeleteObject(Brs)
      SelectObject(hDC,OldPen)
      DeleteObject(Pen)
   Next
EndFunction
hDC
描画するデバイスコンテキストを指定します。
x
中心のX座標を指定します。
y
中心のY座標を指定します。
r
円の半径を指定します。
hR,hG,hB
中心のRGB値を分けて指定します。(RGB値の分解の仕方知らなかったんで)
dR,dG,dB
一番外側ののRGB値を分けて指定します。(RGB値の分解の仕方知らなかったんで)


通報する
ページトップ
投稿記事Posted: 2005年7月17日(日) 22:28 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 899
お住まい: 東京都
RGB値の分解はこういう風にすればできます。
Const GetRValue(rgb) = (rgb And &hff)
Const GetGValue(rgb) = ((rgb >> 8) And &hff)
Const GetBValue(rgb) = ((rgb >> 16) And &hff)

不要でしたらすみません。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年7月18日(月) 00:14 
オフライン

登録日時: 2005年7月17日(日) 09:36
記事: 36
お住まい: 千葉県松戸市
イグトランス様、早速のご指摘ありがとうございます。ご指摘を元に自分の関数集も次のように変更させていただきました。
コード:
Function CircleX(hDC As Long,x As Long,y As Long,r As Long,hRGB As Long,dRGB As Long)As Long
	Dim hR,hG,hB,dR,dG,dB
	Dim i As Long
	Dim Pen As Long,OldPen As Long
	Dim Brs As Long,OldBrs As Long
	hR=GetRValue(hRGB)
	hG=GetGValue(hRGB)
	hB=GetBValue(hRGB)
	dR=GetRValue(dRGB)
	dG=GetGValue(dRGB)
	dB=GetBValue(dRGB)
	For i=0 To r
		Brs=CreateSolidBrush(RGB((hR-dR)/(r)*(i)+dR,(hG-dG)/(r)*(i)+dG,(hB-dB)/(r)*(i)+dB))
		Pen=CreatePen(PS_SOLID,1,RGB((hR-dR)/(r)*(i)+dR,(hG-dG)/(r)*(i)+dG,(hB-dB)/(r)*(i)+dB))
		OldBrs=SelectObject(hDC,Brs)
		OldPen=SelectObject(hDC,Pen)
		Ellipse(hDC,x-(r-i),y-(r-i),x+(r-i),y+(r-i))
		SelectObject(hDC,OldBrs)
		DeleteObject(Brs)
		SelectObject(hDC,OldPen)
		DeleteObject(Pen)
	Next
EndFunction


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[8人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean