VisualBasic講座 第♪回
Section α
BitBltスプライト
今回は、特別編で、BitBltでスプライトについて勉強します。
BitBltは、Section3でしますが、質問が多いので特別編です
こし扱います。
まず最初に、BitBltはAPIなので、宣言をしなければいけません。
その前に、プロジェクト→標準モジュールの追加で、
Declare Function BitBlt Lib "gdi32"
(ByVal hDestDC As Long, ByVal X As Long,
ByVal Y As Long, ByVal nWidth As Long, ByVal
nHeight As Long, ByVal hSrcDC As Long, ByVal
xSrc As Long, ByVal ySrc As Long, ByVal dwRop
As Long) As Long
'VB4以下の人は、以下も
Public Const SRCAND = &H8800C6
Public Const SRCINVERT = &H660046
これを、コピー&ペーストで、標準モジュールに書いてください。
ここで、画像をよういします。
それぞれ Graphick Maask Haikeiとします
つぎに、PictureBoxを3つ用意します。
そして、それぞれのプロパティのAutoRedewをTrue、ScaleModeを3-ピクセル
にします(フォームも)。
PictureBoxのオブジェクト名は、それぞれ、Graphick1
Mask Haikei
としましょう。
まずは、BitBltの説明です。
BitBlt 転送先.hDC,転送先のX,転送先のY,転送先のWidth,転送先のHeight,転送元.hDC,転送元X,転送元Y,ラスタオペレーション定数
です(ちがってたらご指摘を)。
ラスタオペレーション定数というのは、
vbSrcCopyやvbSrcAndやvbSrcInvertなどです。スプライトには、後の2種類でOKです。
VB4以下は、SRCCOPYやSRCANDやSCRINVERTです
スプライトのしかた。
まず、vbSrcAndで、マスク画像(ここではMask)を転送
次に、vbSrcInvertで、画像1を転送
最後に、RefreshでOKです。
※ここでは、Haikeiにスプライト転送をします。
ミニサンプル
先に、画像を用意して、PictureBox(Graphick
Mask Haikei)に読み込んで
おいてください。(必要最低限のことをしています)
BitBlt Haikei.hDC,0,0,33,33,Mask.hDC,0,0,vbSrcAnd
BitBlt Haikei.hDC,0,0,33,33,Graphick.hDC,0,0,vbSrcInvert
Refresh.Haikei ↑
↑
VB4以下の人は、SCRAND ↑
SRCINVERT ↑
にしてください ↑
↑
以上です。 ↑の33は、場合によって変えてください。
Haikeiが以下のようになればOKです
トラブルシューティング
・Haikei,Graphick,MaskのAutiRedewはTrueになっていますか?
・Form,Haikei,Graphick,MaskのScaleModeは3-ピクセルになってますか?
・宣言は、しましたか?
・標準モジュールで宣言していますか?
・VB4以下の人は、SRCANDとSRCINVERTにしていますか?
・VBは、もってますか?(^^)もしくは、停電していませんか?(笑)
ていうかWindowsはBysyになってませんか?(超笑)
もしくは、それは、たぶんC++でしょう(爆)
特別編いかがだったでしょうか?
BitBltはむづかしいですね。Section3でする予定だったのですが・・・
まだ質問がある人は、掲示板にどんどん書こう。