VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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の場合、画像を気持ち的に
左にしたかったのです(タイル敷き、万華鏡風)。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -