鏡像を得る |
ピクチャーを上下左右回転させ鏡像を得る(ゆう(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