No.3ベストアンサー
- 回答日時:
あっサンプル出てきましたね。
ぼくも作ってみました。
多分の質問の文章からすると、拡大縮小を行いたいのでは?と思って、縮尺を変えた画像タイル張りを行っております。
画像は#1の方と一緒で、一度ピクチャボックスに読み込んで、その画像を操作しています。
何度もLoadPictureをするより効果的です。
ファイルは定数で宣言しています。
画像の大きさは、呼び込んだファイルの大きさのX,Y方向の0.2倍に設定しています。(変数:sngScale)
適当な値に変更してください。
必要なもの
フォーム
コマンドボタン1
ピクチャボックス1(Visible = False)
Private Const PIC_FILE As String = "c:\winnt\system32\setup.bmp"
Private Sub Command1_Click()
Dim sngScale As Single '元の絵の縮小拡大率
Dim lngPicW As Long '呼び込んだ絵の幅
Dim lngPicH As Long '呼び込んだ絵の高さ
Dim lngX As Long '描画時のX座標
Dim lngY As Long '描画時のY座標
Dim lngW As Long '描画時の幅
Dim lngH As Long '描画時の高さ
'もとの絵からの縮小拡大率をセット
sngScale = 0.2
'ピクチャの
With Me
With .Picture1
'ピクチャボックスに絵を呼び込む
.AutoSize = True
.Picture = LoadPicture(PIC_FILE)
'ピクチャボックスのサイズより、絵のサイズを得る
lngPicW = .ScaleWidth
lngPicH = .ScaleHeight
End With
'描画時の絵の幅高さを得る
lngW = sngScale * lngPicW
lngH = sngScale * lngPicH
'描画のY座標初期化
lngY = 0
Do
'描画のX座標初期化
lngX = 0
Do
'描画する
Call .PaintPicture(.Picture1.Picture, lngX, lngY, lngW, lngH, 0, 0, lngPicW, lngPicH, vbSrcCopy)
'X座標を描画時の幅の分、X方向にずらす
lngX = lngX + lngW
'X座標がフォームの幅を超えた時ループを抜ける
Loop While lngX < .ScaleWidth
'Y座標を描画時の高さの分、Y方向にずらす
lngY = lngY + lngH
'Y座標がフォームの高さを超えた時ループを抜ける
Loop While lngY < .ScaleHeight
End With
End Sub
余談ですが、描画の命令はPaintPictureが標準でVBにありますが、それ以外にWindowsAPIでBitBltやStretchBltというのがあります。
検索サイトで「描画/方法」で検索をしたらたぶん出てくるとは思いますが、今回はPaintPicureが最も適しています。それは画像の拡大縮小の処理が一番早いからです。
逆に、縮尺を変えずに画像を転送するのであれば、BitBltが適しています。
あくまで余談ですが・・・
No.2
- 回答日時:
訂正
Me.AutoRedraw = False
With Picture1
.Picture = LoadPicture("hoge.bmp")
For X = 0 To Me.ScaleWidth Step .ScaleWidth
For Y = 0 To Me.ScaleHeight Step .ScaleHeight
Me.PaintPicture .Picture, X, Y
Next
Next
End With
Me.AutoRedraw = True
No.1
- 回答日時:
>並べて表示みたいに
これでどうでしょうか?
Dim X As Long
Dim Y As Long
Me.AutoRedraw = False
With Picture1
.Picture = LoadPicture("hoge.bmp")
For X = 0 To Me.ScaleWidth \ .ScaleWidth
For Y = 0 To Me.ScaleWidth \ .ScaleWidth
Me.PaintPicture .Picture, X * .ScaleWidth, Y * .ScaleHeight
Next
Next
End With
Me.AutoRedraw = True
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(パソコン・スマホ・電化製品) CMD等でPC操作(excel開く等)を自動化させたい 1 2023/03/15 09:53
- Windows 10 zoomで自分の顔の背景 3 2023/06/07 22:34
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- Excel(エクセル) 条件付き書式の設定方法を教えて下さい。 2 2023/04/14 18:12
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- HTML・CSS 疑似要素で背景画像に指定したSVG画像の色変更 2 2023/01/30 22:45
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面全体を再描画させたい
-
NVIDIAのシェーダーキャッシュ
-
word
-
[VB.net] DataGridViewの列ヘッ...
-
VB6,リストボックスの特定行の...
-
VC++プログラムをつかったBMP画...
-
MFCでOnPaintのタイミング
-
WM_SIZEとWM_SIZINGの違い (Win...
-
PBoxのGraphicsをImageに書き込む
-
ダイアログベースの再描画について
-
MFCのタイマーのつかい方を教え...
-
多角形の描画。(VC++)
-
InvalidateRectの使い方について
-
Form1 Load で実行されない。
-
c言語を使いダイアログにbmpを...
-
絵を描くにはMac?Windows
-
プシュボタンのテキストの色を...
-
UpdateData( FALSE); による文...
-
VB.netでのライン描画方法がわ...
-
円の描画の太さを指定できるCコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6,リストボックスの特定行の...
-
NVIDIAのシェーダーキャッシュ
-
word
-
[VB.net] DataGridViewの列ヘッ...
-
TextBoxに文字を書いても表示さ...
-
MFCでOnPaintのタイミング
-
UpdateData( FALSE); による文...
-
panelのスクロール表示について
-
VBAにGDI+を参照させる方法
-
VC++プログラムをつかったBMP画...
-
VB.netでのライン描画方法がわ...
-
FlexGridの一部のみ表示を更新...
-
絵を描くにはMac?Windows
-
CStaticコントロールの静的イメ...
-
SHGetFileInfoでアイコンが取得...
-
InvalidateRectの使い方について
-
WM_SIZEとWM_SIZINGの違い (Win...
-
Labelの文字をスクロールする際...
-
OneNote 2010 文字と描画がずれる
-
StretchBlt関数について
おすすめ情報