プロが教えるわが家の防犯対策術!

たびたび質問している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の場合、グローバル変数を使わなくちゃいけないので避けたいです。よろしくお願いします。

A 回答 (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

補足日時:2002/02/03 13:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!