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でする予定だったのですが・・・
    
 まだ質問がある人は、掲示板にどんどん書こう。
 

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル