たびたび質問している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件)
- 最新から表示
- 回答順に表示
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ゲーム 【 ゲーム ガチャ確率 】 あるゲームでガチャを回そうと思うのですが、確率計算が出来なかったので教え 1 2022/10/16 20:34
- 数学 三角関数の和 4 2023/06/17 18:33
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
- 団地・UR賃貸 URの漏水事故で 1 2022/05/12 19:44
- 数学 微分積分の二重積分についての問題がわからないです。 1 2022/07/17 02:36
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- その他(ブラウザ) Chromium の拡張機能にLINEってありますか? 1 2022/08/10 16:51
- その他(プログラミング・Web制作) VS codeを使って、ラズパイ Picoを動かせる簡単な方法 1 2023/04/27 13:49
- 団地・UR賃貸 UR都市機構の公団は害虫(G)が多いか? 4 2022/06/24 21:44
- 団地・UR賃貸 URの定期借家契約の再契約について 1 2023/04/10 15:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
scilabでのグラフ描画時の軸設定
-
立方体をくるくる回転させるプ...
-
ビットマップに描画をしてピク...
-
win32api複数のタイマーを同時...
-
C#で壁の当たり判定と自キャラ...
-
画面に絵を出す方法
-
VC++2010 MFC EDIT に格子
-
VB2010にて、プロットエリア...
-
実行時エラー 438になった時の...
-
VBA シートのボタン名を変更し...
-
worksheetFunctionクラスのVloo...
-
ExcelVBA Range クラスの Page...
-
ADODB.Streamを使用してUTF-8を...
-
フォームの再読み込み
-
eclipseのデバッグ中に変数の値...
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォーム上に現在日時...
-
なぜこんな初歩的なVBAのIf文で...
-
Access VBA でデータペーストを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
Word 描画オブジェクトを削除...
-
C#を用いて描画する四角形の角...
-
ビットマップに描画をしてピク...
-
PowerPoint の VBA
-
給紙トレイをダイアログを使わ...
-
win32api複数のタイマーを同時...
-
画面に絵を出す方法
-
MFCでのコンボボックスについて
-
.NETのPictureBoxでウインドウ...
-
scilabでのグラフ描画時の軸設定
-
Excel VBA:コントロールボタン...
-
VC;;6.0のMFCで線を簡単に引け...
-
花火のアルゴリズム
-
VB.NETでグラフィックを描くと...
-
水平線の描画
-
Excel 2007で、フリーフォーム描画
-
C# DrawImage 物理サイズでな...
-
円の頂点の求め方を知りたいです。
おすすめ情報