- 締切済み
ピクチャボックス間のコピー方法
たびたび質問しているhidezoです(^_^; 表題のように、ピクチャボックスにある画像を、別のピクチャボックスにコピーしたいのですが、うまくいきません。 おそらく簡単な解決策があると思うのですが、ヘルプを参照してもよく分かりませんでした。 プログラムの内容 オブジェクト Picture2,Picture3に同じ画像を代入 Piture2上にLineを描画 2回目以降のPiture2にLineを描画する際に一度Picture3を代入して元の画像に戻してからLineを描画 (ゲームでいうとキャラクタ移動でキャラクタと背景の重ね合わせみたいな感じです) やってみた方法 方法1(ダメでした) Picture2.Picture = Picture3.Picture 方法2(ダメでした) Picture2.PaintPicture Picture3.Picture, 0, 0 方法3(できたけど・・・) SET Picture2.Picture = TMP ※TMPは・・・ Set TMP = LoadPicture(strOpenFile) Set Picture3.Piture = TMP 方法3の場合、グローバル変数を使わなくちゃいけないので避けたいです。よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- maruru01
- ベストアンサー率51% (1179/2272)
回答No.1
こんにちは。maruru01です。 方法1で出来ますけど。 VBのバージョンとかが違うから? あと、何か特殊な操作をしてますか?特にピクチャーボックスに。 補足をお願いします。 では。
補足
VBは6.0です。 実はPicture1というオブジェクトに一度画像データを読み込んでいます。(Autosize=true) Picture1よりHeight,Widthを取得して、Picture2に縦横比を換えずに最大320x240pixになるようにスケールをかけて代入しています。(これは問題なくできています) そのPiture2をPiture3にコピーしたいのですが、うまくいきません。(Piture2,3はAutosize=False) 本来なら、Picture2と同様にPiture1からPiture3に代入すればいいのですが、Piture3へPiture2の代入は別オブジェクトでやっていて、何回も繰り返します。 ここで、毎回Picture1のHeight,Widthを取得するのも処理時間がかかるし、Height,Widthをグローバル変数にするのも嫌だと思っています。 以下に、ソースを付けます。(変数に無駄がありますが(^_^;) Private Sub mnuFileOpen_Click() Dim strOpenFile As String On Error GoTo err_mnuFileOpen CommonDialog1.Filter = "*.jpg|*.jpg|*.bmp|*.bmp|*.gif|*.gif" CommonDialog1.ShowOpen strOpenFile = CommonDialog1.FileName Picture1.Picture = LoadPicture(strOpenFile) 'Set TMP = LoadPicture(strOpenFile) intOrgPicX = Picture1.Width intOrgPicY = Picture1.Height If (320 / intOrgPicX) >= (240 / intOrgPicY) Then intScale = (240 / intOrgPicY) Else intScale = (320 / intOrgPicX) End If Picture2.Height = intOrgPicY * intScale Picture2.Width = intOrgPicX * intScale Picture2.Visible = True Picture2.PaintPicture Picture1.Picture, 0, 0, intOrgPicX * intScale, intOrgPicY * intScale Picture3.Height = intOrgPicY * intScale Picture3.Width = intOrgPicX * intScale Picture3.Picture = Picture2.Picture 'Set Picture3.Picture = TMP 'Picture3.PaintPicture Picture1.Picture, 0, 0, intOrgPicX * intScale, intOrgPicY * intScale err_mnuFileOpen: Exit Sub End Sub