投稿日 | : 2003/07/20(Sun) 19:37 |
投稿者 | : おじん |
URL | : |
タイトル | : Re^4: BitBltの使い方 |
> > > Private Declare Function BitBlt Lib "GDI32" _
> > > (ByVal hDCDest As Long, ByVal XDest As Long, _
> > > ByVal YDest As Long, ByVal nWidth As Long, _
> > > ByVal nHeight As Long, ByVal hDCSrc As Long, _
> > > ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) As Long
> > > Private Const SRCCOPY = &HCC0020
> > > Private Sub Command1_Click()
> > > BitBlt Picture1.hDC, -5&, -5&, Picture2.ScaleWidth, Picture2.ScaleHeight, Picture2.hDC, 0&, 0&, SRCCOPY
> > > Picture1.Refresh
> > > End Sub
> > 早速ありがとうございます。
> > この、「−5&」が思うとおり(=左にずれない)にならないのです。
> > みかけ、「+5&」でもないようなのです(+方向と思いますが)。
> > なにか、どこかを調べればよいのでしょうか。
> Picture2に表示されている画像を上方向と左方向にずらしてPicture1に表示したいと
> 言う事ではないのですか?
> ずらして表示するという事は、元々 XY座標が 0,0 の位置に表示されているのですから
> -5,-5 にすれば上方向に5ピクセル、左方向に5ピクセルずれて(その分表示されない)
> 表示されます。
> Pictureコントロールのプロパティを何も設定しないで下記を先ほどのコードに追加して下さい。
> -5,-5 で効果が解りづらいなら -10,-10に変更して見て下さい。
>
> Private Sub Form_Load()
> Picture1.Move 500, 500, 3000, 3000
> Picture1.AutoRedraw = True
> Picture2.Move 4000, 500, 3000, 3000
> Picture2.AutoRedraw = True
> Picture2.Picture = LoadPicture("c:\test.bmp")
> End Sub
ありがとうございました。
「元画像」を動かすことに気が付きませんでした。というのは、
for n=0 to 2 '2=2,3......n
bitblt pic1,n*pic2width,0,pic2width,pic2height,0,0,vbsrccopy
next n
ということをやりたかったとき、n=0の場合、画像を気持ち的に
左にしたかったのです(タイル敷き、万華鏡風)。