作成者 |
メッセージ |
|
|
イグトランス様、早速のご指摘ありがとうございます。ご指摘を元に自分の関数集も次のように変更させていただきました。
コード: 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
イグトランス様、早速のご指摘ありがとうございます。ご指摘を元に自分の関数集も次のように変更させていただきました。 [code]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[/code]
|
|
|
投稿記事 |
Posted: 2005年7月18日(月) 00:14 |
|
|
|
|
|
RGB値の分解はこういう風にすればできます。
Const GetRValue(rgb) = (rgb And &hff)
Const GetGValue(rgb) = ((rgb >> 8) And &hff)
Const GetBValue(rgb) = ((rgb >> 16) And &hff)
不要でしたらすみません。
RGB値の分解はこういう風にすればできます。 Const GetRValue(rgb) = (rgb And &hff) Const GetGValue(rgb) = ((rgb >> 8) And &hff) Const GetBValue(rgb) = ((rgb >> 16) And &hff)
不要でしたらすみません。
|
|
|
投稿記事 |
Posted: 2005年7月17日(日) 22:28 |
|
|
|
|
|
球体を描画します。
コード: 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値の分解の仕方知らなかったんで)
球体を描画します。 [code]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[/code] [i][b]hDC[/b][/i] 描画するデバイスコンテキストを指定します。 [i][b]x[/b][/i] 中心のX座標を指定します。 [i][b]y[/b][/i] 中心のY座標を指定します。 [i][b]r[/b][/i] 円の半径を指定します。 [i][b]hR,hG,hB[/b][/i] 中心のRGB値を分けて指定します。(RGB値の分解の仕方知らなかったんで) [i][b]dR,dG,dB[/b][/i] 一番外側ののRGB値を分けて指定します。(RGB値の分解の仕方知らなかったんで)
|
|
|
投稿記事 |
Posted: 2005年7月17日(日) 21:53 |
|
|
|
|