• ベストアンサー

フォームにビットマップを表示

PaintPicture LoadPicture("c:winnt\winnt.bmp"), _ 0, _ 0, _ ScaleWidth, _ ScaleHeight   とかけば最大化で表示はするのですが   画面のプロパティで背景を指定するときに表示位置の   並べて表示みたいにしたいのですがどうすればできますでしょうか   また、そのときに1つ1つのおおきさのしていもできるのですか   教えてください。   よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答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が適しています。 あくまで余談ですが・・・

その他の回答 (2)

  • todo36
  • ベストアンサー率58% (728/1234)
回答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

  • todo36
  • ベストアンサー率58% (728/1234)
回答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

  • 画像の縮小

    ピクチャー画像の縮小を行いたいのですが、 sw = Picture1.ScaleWidth * 0.1 sh = Picture1.ScaleHeight * 0.1 w = Picture1.Width h = Picture1.Height Picture2.Height = h * 0.1 - Picture2.Height - Picture2.ScaleHeight Picture2.Width = w * 0.1 - Picture2.Width- Picture2.ScaleWidth Picture2.PaintPicture Picture1.Picture,0,0,sw,sh のようなプログラムを行うと、画面で見えている範囲のピクチャーは縮小してくれるのですが、VB画面からはみ出る部分は切れてしまいます。 ピクチャーを1つずつ、とって縮小していくとなると相当な時間がかかってしまうので、早く処理できる方法は無いでしょうか? ご存知の方は教えて下さい。

  • 小画像を任意の位置に壁紙表示するには?

    小サイズの画像ファイル(300*100 ぐらい、 bmp 形式 )があって、 これをデスクトップ画面に出しておきたいと思っています。 その時に、画面の中央とかじゃなくて、右上辺りに表示できるようにしたいと思ってるんですが、 どういう方法が考えられるでしょうか? 画面のプロパティ>「デスクトップ」タブのところで、背景用にこのファイルを選んだ場合には、その表示位置としては、  ・中央に表示  ・並べて表示  ・拡大して表示 しか選べないようで、何か別の方法を工夫しきゃならないんだろうとは思ってますが ... --

  • 挿入した画像を等倍ではなく、サイズを指定したい

    Sub Macro1() ActiveSheet.Pictures.Insert( _ "C:\Users\画像.gif").Select With Selection.ShapeRange .ScaleWidth 1, msoFalse, msoScaleFromTopLeft .ScaleHeight 1, msoFalse, msoScaleFromTopLeft End With End Sub これで画像を挿入し、サイズを変更してるのですが 1だと等倍になってしまうようです。 常に1cmとか、サイズを指定して変更するプロパティはありますか?

  • Access2000 フォームビューの表示関連

    どなたか、ホントにお助け下さい。 A、B、Cテーブルのデータを1つのフォームで表示入力できるよう、A、B、Cを繋げたクエリ作成し、 A対B、A対Cの一対多リレーションシップ設定したんですが、フォームビューで確認すると背景だけで表示されません。 ・コントロールのプロパティの「可視」の状態は「はい」  コントロールのはフォーム上の配置位置が「ページヘッ ダー/フッター」は「詳細」となっております。 切り分け内容 ・フォーム-対象フォルダ選択-開く-背景表示無し -プロパティ-レコードソース-クエリー-レコードソースを外すと”入力フォーム自体”は表示されるようになりますが、各々#Name?となってしまいます。 お助け下さい。

  • 壁紙にJPGが表示されないのは、なぜ?

    壁紙に、JPGが表示されなくなりました。 以前は、表示されてたのですが、 フリーの時計(壁紙にカレンダーを書き込むタイプ)を使用したあとに、JPGのみ表示されなくなった気がするのですが「確かではないのですが」 ★なにもないところで、右クリック→アクティブデスクトップ→ デスクトップのカスタマイズ→画面のプロパティーで背景で、画像ファイルを選択して、表示させることが出来たのですが、現在できません(JPGのみ表示できません、BMP、GIFなどは、表示されるのですが) ただし、IEにJPGのファイルを表示させてから、 それを、背景にすることは、できるのですが、そうすると、★の上記方法で、みてみると、ファイルがBMPに変わっているのです。(元のファイルはJPGのままです) ★の方法で、JPGを表示させることはできるでしょうか? よろしくお願いします。

  • 壁紙が表示できない(追加)

    ご指摘がありましたので、もう少し詳しい内容をお伝えしたいと思います。 その壁紙は壁紙専門のページからダウンロードしました。 ファイルの種類はbmpです。 解凍後画面のプロパティの背景のところで選択しても、実際にデスクトップ上に表示することができず、かわりにデスクトップが黒くなってしまいます。 以上のことから何かお気づきになることがありましたら、教えてください。

  • 別ウィンドウを最大化表示させる

    別ウィンドウを最大化表示させたいのですが、 http://www.tohoho-web.com/how2/window.htm#window のようにしてもメニューバーなどがなくなってしまうし、位置を指定しなければなりません。 ●別ウィンドウを最大化するには位置(サイズ)を指定するやり方しかないのでしょうか? ●また、メニューバーやツールバーなども一緒に表示させる最大化の仕方はありますでしょうか? ●もうひとつ、全画面(F11)で表示させるやり方はありますでしょうか? 経験者の方、お願いします。

    • ベストアンサー
    • HTML
  • ピクチャーボックスの座標指定について

    ピクチャーボックス内で表示位置(座標)を指定して画像を表示したいです。 この場合loadpictureによる座標指定はできないのでしょうか? よろしくお願いします。

  • 画面のプロパティのデスクトップタブで

    画面のプロパティのデスクトップタブで 背景を変更しようと「参照」ボタンを押してJPEG画像を選びました。 しかし、その画像を選択してOKを押しても何の変更もありません。 「背景」一覧もC:\WINDOWS\Web\Wallpaperからのものではなく、 マイピクチャのとあるフォルダのbmp画像が表示されています。 どうすれば背景をJPEG画像に変えられるでしょうか? 「背景」一覧をC:\WINDOWS\Web\Wallpaperのものにどうやったらもどせるでしょうか? Desktop Albumというフリーソフトを使ったときからおかしくなったような気がします。

  • 画面のプロパティでの 壁紙のデフォルトフォルダの変更

    画面のプロパティで背景を変更するとき、一覧に出てくるのは、 C:\WINDOWS の bmpファイル か C:\WINDOWS\Web\Wallpaper の JPGファイル ですが、 このデフォルトフォルダをマイドキュメントのフォルダに変えたいのですが、どうしたらよいのでしょうか? よろしくおねがいします。

専門家に質問してみよう