投稿日 | : 2005/08/02(Tue) 13:31 |
投稿者 | : おじん |
Eメール | : |
URL | : |
タイトル | : 色の三原色を描きたい |
色の三原色の模様を描いてみようと思い、下記のソースのようにしました。
いわゆる「加法三原色=ソースの上:pType=0で実行」は思うようにいった
のですが、「減法三原色、Magenta+Yellow+Cyan」はうまくいきません。
vbDrawModeの値(1-16)すべてを試してみました。が、ビット演算の「AND」
がありませんので、この方法ではできないのでしょうか。
よろしくおねがいいたします。
Formで、
Call ColorB Picture1,1
で呼び出して使います(でなくてもいいのですが、そうしています)。
Moduleで、(または1行目を書き換え、Formの例えばForm_Click()で)、
Public Sub ColorB(pic As Object, Optional pType As Long = 0)
Dim pw!, ph!
pic.ScaleMode = vbPixels
pic.AutoRedraw = True
pic.BackColor = vbBlack
pic.FillStyle = vbSolid
pw = pic.ScaleWidth / 3 '
ph = pic.ScaleHeight / 3
If pType = 0 Then '加法三原色
pic.DrawMode = vbMergePen
pic.FillColor = vbRed
pic.Circle (3 * pw / 2, ph), pw * 0.9, vbRed
pic.FillColor = vbBlue
pic.Circle (pw - 2, 3 * ph / 2 + 25), pw * 0.9, vbBlue
pic.FillColor = vbGreen
pic.Circle (2 * pw + 2, 3 * ph / 2 + 25), pw * 0.9, vbGreen
ElseIf pType = 1 Then '減法三原色
pic.DrawMode = vbMergeNotPen '<<<<<<<=======ここは???
pic.FillColor = vbMagenta
pic.Circle (3 * pw / 2, ph), pw * 0.9, vbMagenta
pic.FillColor = vbYellow
pic.Circle (pw - 2, 3 * ph / 2 + 25), pw * 0.9, vbYellow
pic.FillColor = vbCyan
pic.Circle (2 * pw + 2, 3 * ph / 2 + 25), pw * 0.9, vbCyan
End If
End Sub