OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

ピクチャボックス間のコピー方法

  • 困ってます
  • 質問No.210545
  • 閲覧数155
  • ありがとう数3
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 85% (193/225)

たびたび質問している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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル14

ベストアンサー率 51% (1179/2272)

こんにちは。maruru01です。 方法1で出来ますけど。 VBのバージョンとかが違うから? あと、何か特殊な操作をしてますか?特にピクチャーボックスに。 補足をお願いします。 では。 ...続きを読む
こんにちは。maruru01です。
方法1で出来ますけど。

VBのバージョンとかが違うから?
あと、何か特殊な操作をしてますか?特にピクチャーボックスに。
補足をお願いします。
では。
補足コメント
hidezo

お礼率 85% (193/225)

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:38


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ