ab.com コミュニティ https://www.activebasic.com/forum/ |
|
便利なグラフィック関数 https://www.activebasic.com/forum/viewtopic.php?t=198 |
ページ 1 / 1 |
作成者: | BingoMan [ 2005年7月17日(日) 21:53 ] |
記事の件名: | 便利なグラフィック関数 |
球体を描画します。 コード: 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 EndFunctionhDC 描画するデバイスコンテキストを指定します。 x 中心のX座標を指定します。 y 中心のY座標を指定します。 r 円の半径を指定します。 hR,hG,hB 中心のRGB値を分けて指定します。(RGB値の分解の仕方知らなかったんで) dR,dG,dB 一番外側ののRGB値を分けて指定します。(RGB値の分解の仕方知らなかったんで) |
作成者: | イグトランス [ 2005年7月17日(日) 22:28 ] |
記事の件名: | Re: 便利なグラフィック関数 |
RGB値の分解はこういう風にすればできます。 Const GetRValue(rgb) = (rgb And &hff) Const GetGValue(rgb) = ((rgb >> 8) And &hff) Const GetBValue(rgb) = ((rgb >> 16) And &hff) 不要でしたらすみません。 |
作成者: | BingoMan [ 2005年7月18日(月) 00:14 ] |
記事の件名: | |
イグトランス様、早速のご指摘ありがとうございます。ご指摘を元に自分の関数集も次のように変更させていただきました。 コード: 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 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |