ピクチャボックスの擬似的な透明化
ピクチャボックスはフォームやプリンタ同様に文字列やグラフィックを自由に操作できます。
じゃ、下のオブジェクトを透かしてみたいですよね?
しかし、VBのピクチャボックスは背景色を透明にすることができません。そこで、背景の画像をピクチャボックスにコピーして擬似的に透明になってるかのようにしています。
サンプル(32bit) ダウンロード
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim strWork As String Dim sngX As Single Dim sngY As Single If Button = vbLeftButton Then With Picture1 '======[ ピクチャボックスの移動 '----[ 移動先座標算出 sngX = .Left + X - sngDownX sngY = .Top + Y - sngDownY '----[ 移動先補正 If sngX < 0 Then sngX = 0 If sngY < 0 Then sngY = 0 If (sngX + .Width) > Image1.Width Then sngX = Image1.Width - .Width If (sngY + .Height) > Image1.Height Then sngY = Image1.Height - .Height '----[ 移動 .Left = sngX .Top = sngY '======[ 背景のコピー .PaintPicture Image1.Picture, 0, 0 _ , .ScaleWidth, .ScaleHeight _ , .Left + ((.Width - .ScaleWidth) / 2), .Top + ((.Height - .ScaleHeight) / 2) _ , .ScaleWidth, .ScaleHeight '======[ 文字のセット strWork = "擬似的に透明化してます" .CurrentX = (.Width - .TextWidth(strWork)) / 2 .CurrentY = (.Height - .TextHeight(strWork)) / 2 Picture1.Print strWork End With End If End Sub
サンプル解説
PaintPictureメソッドで下にある(サンプルの場合はImage1)画像のPicture1と重なってる部分だけをコピーして表示さています。
これでピクチャボックスが透明になったよーな見た目を得ることができます。
ただ、他のコントロールが重なっている場合までは考慮していませんのでご注意ください。
[ Window Close ]