[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間: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

投稿時間:2005/08/02(Tue) 16:50
投稿者名:エデン
URL :
タイトル:
Re: 色の三原色を描きたい
>     pic.BackColor = vbBlack

減法3原色の場合、背景は白じゃないのダメなのでは?
加法は0からスタート、減法は255からスタートでないと。

pic.BackColor = vbWhite として、 pic.DrawMode = vbMaskPen で減法3原色になると思います。

投稿時間:2005/08/02(Tue) 19:26
投稿者名:おじん
Eメール:
URL :
タイトル:
Re^2: 色の三原色を描きたい。解決。
> >     pic.BackColor = vbBlack
>
> 減法3原色の場合、背景は白じゃないのダメなのでは?
> 加法は0からスタート、減法は255からスタートでないと。
>
> pic.BackColor = vbWhite として、 pic.DrawMode = vbMaskPen で減法3原色になると思います。
ありがとうございました。
色々なところで見る、背景色=黒という先入観がありましたので。
vbMaskPen:ペンと表示色の共通色=「AND」と思ってやったのですが、BackColorが
黒ではだめですね。勉強になりました。でも、次の問題が、、、
背景を黒にするにはどうしたらよいか?また、試行錯誤が続くようです。
ありがとうございました。