鏡像を得る
                                                         玄関へお回り下さい。
ピクチャーを上下左右回転させ鏡像を得る(ゆう(U)さん投稿分)    (056)
 
Option Explicit     'SampleNo=056 WindowsXP VB6.0(SP5) 2002.05.13

'ゆう(U)さん投稿分サンプルを元に一部変更を加えております。
'過去のログ No.280 を参照願います。
Private Sub Command1_Click()
  Dim sngWidth As Single    '絵の幅(ピクセル)
  Dim sngHeight As Single    '絵の高さ(ピクセル)

  With Picture1
    sngWidth = .ScaleX(.ScaleWidth, .ScaleMode, vbPixels)
    sngHeight = .ScaleY(.ScaleHeight, .ScaleMode, vbPixels)
  End With
  With Picture2
    .Parent.ScaleMode = vbPixels
    .ScaleMode = vbPixels
    'サイズ調整、()部分は枠の幅です、枠有り無しどっちでもOK
    .Move .Left, .Top, sngWidth + (.Width - .ScaleWidth), _
                  sngHeight + (.Height - .ScaleHeight)
    .Refresh '(AutoRedraw=False)用
    '左右の鏡像の場合
    .PaintPicture Picture1.Picture, sngWidth - 1, 0, -sngWidth
    '一旦鏡像を保存
    SavePicture .Image, "MyBmp.bmp"
  End With
  'Picture5.Visible =False :Picture5.AutoSize =True で
  '保存したBMPを非表示で読込
  Set Picture5.Picture = LoadPicture("MyBmp.bmp")
  With Picture3
    .Parent.ScaleMode = vbPixels
    .ScaleMode = vbPixels
    'サイズ調整、()部分は枠の幅です、枠有り無しどっちでもOK
    .Move .Left, .Top, sngWidth + (.Width - .ScaleWidth), _
                  sngHeight + (.Height - .ScaleHeight)
    .Refresh '(AutoRedraw=False)用
    '上下の鏡像の場合
    .PaintPicture Picture1.Picture, 0, sngHeight - 1, sngWidth, -sngHeight
  End With
  With Picture5
    sngWidth = .ScaleX(.ScaleWidth, .ScaleMode, vbPixels)
    sngHeight = .ScaleY(.ScaleHeight, .ScaleMode, vbPixels)
  End With
  With Picture4
    .Parent.ScaleMode = vbPixels
    .ScaleMode = vbPixels
    'サイズ調整、()部分は枠の幅です、枠有り無しどっちでもOK
    .Move .Left, .Top, sngWidth + (.Width - .ScaleWidth), _
                  sngHeight + (.Height - .ScaleHeight)
    .Refresh '(AutoRedraw=False)用
    '上下の鏡像の場合
    .PaintPicture Picture5.Picture, 0, sngHeight - 1, sngWidth, -sngHeight
  End With
End Sub


上記のように表示されるように一部追加しております。又テスト用に表示している為に一部コードが
重複しております。




2002/05/13