PaintPicture LoadPicture("c:winnt\winnt.bmp"), _
0, _
0, _
ScaleWidth, _
ScaleHeight

  とかけば最大化で表示はするのですが
  画面のプロパティで背景を指定するときに表示位置の
  並べて表示みたいにしたいのですがどうすればできますでしょうか
  また、そのときに1つ1つのおおきさのしていもできるのですか
  教えてください。
  よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (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が適しています。
あくまで余談ですが・・・
    • good
    • 0

訂正



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
    • good
    • 0

>並べて表示みたいに



これでどうでしょうか?

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
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qイメージビデオは英語でなんと言うのでしょうか?

日本で言う、イメージビデオは英語でなんと言うのでしょうか?

私の言うイメージビデオとは、アーティストのPVなどのことではなく、アダルト系女性アイドルのビデオ作品のことです。

google englishにて、image videoで検索してみましたが、思うような検索結果が得られませんでした。
image videoは和製英語のようですね。

Aベストアンサー

回答になってませんが
こんな感じで探せるのでは?

http://www.google.com/search?hl=en&q=sexy+OR+elotic+video+OR+movie+OR+image&aq=f&aqi=&oq=&pbx=1&bav=on.2,or.r_gc.r_pw.&biw=787&bih=561#sclient=psy&hl=en&source=hp&q=sexy+OR+elotic+video+OR+movie+OR+image&aq=f&aqi=&aql=&oq=sexy+OR+elotic+video+OR+movie+OR+image&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=905e9081899b75b1&biw=858&bih=612

Qピクチャボックス, PaintPicture 内 LoadPicture関数の使い方

For IA& = Picture02.LBound To Picture02.UBound
Picture02(IA&).AutoRedraw = True
Picture02(IA&).AutoSize = False
Picture02(IA&).ScaleMode = vbPixels
Picture02(IA&).Cls
Next IA&
でSub Form_Load()にて初期化したあとで

IC& = Index
Picture02(IC&).ScaleMode = vbPixels
Picture02(IC&).PaintPicture LoadPicture(InFile$), 0, 0, YokoHaba&, TateTakasa&
Picture02(IC&).Refresh
と読み取ったときに
EOIセグメントが存在しないJPGファイルをInFile$に指定したのときにPicture02(IC&).PaintPictureでハング(CPU=100%, 無応答)します。
ハングアップの検出方法、又はハングアップしない参照方法などの対応をご存知の方いらっしゃいませんか。
Open InFile$ -Close でEOIセグメントの存在をチェックするとわずか50KBのファイルに約1秒(GW-Basic, 80286並の速度)使ってしまいます。より高速な方法を探しています。

OS Win2000 SP2
Visual basic 6.0 SP5
「EOIセグメントが存在しないJPGファイル」はクライアントからサーバーへの送信途中で回線を物理的に切断することにより作成したものです。

For IA& = Picture02.LBound To Picture02.UBound
Picture02(IA&).AutoRedraw = True
Picture02(IA&).AutoSize = False
Picture02(IA&).ScaleMode = vbPixels
Picture02(IA&).Cls
Next IA&
でSub Form_Load()にて初期化したあとで

IC& = Index
Picture02(IC&).ScaleMode = vbPixels
Picture02(IC&).PaintPicture LoadPicture(InFile$), 0, 0, YokoHaba&, TateTakasa&
Picture02(IC&).Refresh
と読み取ったときに
EOIセグメントが存在しないJPGファイルをInFile$に指定したのときにP...続きを読む

Aベストアンサー

こんにちは。KenKen_SP です。

ハングアップの検出方法...これは知りません。で、もう片方の EOI セグメント。
これは Jpeg の End Of Image マーカのことですね?

> Open InFile$ -Close でEOIセグメントの存在をチェックするとわずか50KBの
> ファイルに約1秒(GW-Basic, 80286並の速度)使ってしまいます。

バイナリのヘッダ(SOIマーカ)とフッタ(EOIマーカ)だけ見た簡易チェッカーでは
ダメですかね...。これなら VB 標準のファイル I/O で約 700 KBの JPEG でも
計測不能な瞬時で判定できますけど。

(CPU: P4-2.4GHz Mem:512M WinXP VB6.0 or VBA)

適当に書いたコードですけど、参考になりますか?

' // テスト用時間計測 API
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

' // テストプロシージャ
Sub TestProc()
  Dim lRet As Long
  Dim sMsg As String
  Dim t  As Long
  t = timeGetTime()
  lRet = JpegChecker("C:\sample.jpg")
  t = (timeGetTime() - t) / 1000
  Select Case lRet
    Case -1: sMsg = "ファイルオープンエラー"
    Case 0: sMsg = "Jpeg ではない(破損含む)"
    Case 1: sMsg = "Jpeg だと思う"
  End Select
  Debug.Print "Time:= " & Format$(t, "#,###.000sec")
  Debug.Print "Result:= " & sMsg
End Sub

' // 簡易 Jpeg チェッカー
Private Function JpegChecker(ByVal FilePath As String) As Long

  ' 戻り値 1:Jpeg らしい 0:Jpeg ではない -1:ファイルが開けない
  
  Const JPEG_FILEHEADER As String = "FFD8"
  Const JPEG_FILEFOOTER As String = "FFD9"

  Dim Buf() As Byte
  Dim n   As Integer
  Dim i   As Long
  JpegChecker = -1
  If Dir$(FilePath) <> "" Then
    n = FreeFile()
    On Error GoTo ERROR_HANDLER
    Open FilePath For Binary Access Read As #n
      ReDim Buf(LOF(n) - 1)
      Get #n, , Buf
    Close #n
    On Error GoTo 0
    i = UBound(Buf) - 1
    ' Check Jpeg SOI Marker And EOI Marker
    If HexDump(Buf, 0, 2) = JPEG_FILEHEADER And _
      HexDump(Buf, i, 2) = JPEG_FILEFOOTER Then
      JpegChecker = 1
    Else
      JpegChecker = 0
    End If
    Erase Buf
  End If
  Exit Function
ERROR_HANDLER:
  Err.Clear
  Close #n
End Function

' // 16進ダンプ
Private Function HexDump( _
  ByRef Buf() As Byte, _
  ByVal Pos As Long, _
  ByVal Length As Long, _
  Optional ByVal LitteleEdian As Boolean = True _
) As String

  Dim i  As Long
  Dim sTmp As String
  Dim sRet As String
  For i = Pos To Pos + Length - 1
    sRet = sRet & Right$("0" & Hex$(Buf(i)), 2)
  Next
  If LitteleEdian Then
    HexDump = sRet
  Else
    For i = 1 To Len(sRet) Step 2
      sTmp = sTmp & Right$(sRet, 2)
      sRet = Left(sRet, Len(sRet) - 2)
    Next i
    HexDump = sTmp
  End If
End Function

こんにちは。KenKen_SP です。

ハングアップの検出方法...これは知りません。で、もう片方の EOI セグメント。
これは Jpeg の End Of Image マーカのことですね?

> Open InFile$ -Close でEOIセグメントの存在をチェックするとわずか50KBの
> ファイルに約1秒(GW-Basic, 80286並の速度)使ってしまいます。

バイナリのヘッダ(SOIマーカ)とフッタ(EOIマーカ)だけ見た簡易チェッカーでは
ダメですかね...。これなら VB 標準のファイル I/O で約 700 KBの JPEG でも
計測不能な瞬時で判定できますけど...続きを読む

Qアダルトビデオじゃなくイメージビデオを見る目的は?

男性の多くはアダルトビデオを購入し、見ていると思いますが、
イメージビデオ・・って言うんでしょうか?
女の人が、セックスしたり全裸になるわけではなく、脱いでも水着まで程度で、
ただ普通に(若干卑猥ですが)遊んでいるだけのビデオってありますよね。
あれはなんで見るんでしょうか?
完全なアダルトビデオならなんとなく見る目的は分かるのですが、
イメージビデオはなぜ見ようと思うのか全く理解できません。
そのアイドルが好きな場合はわかりますが、うちの旦那は適当に知らない子のを選んで買っているみたいです。
目的が分からないので、アダルトビデオを見てるより気持ち悪く感じてしまいました・・・。

不思議で仕方が無いので、見る人の気持ちが分かる方いましたら、ぜひ教えてくださいm(__)m
ちなみに発見したのは全部10歳前後の幼い子のビデオでした。

Aベストアンサー

>10歳前後の幼い子

ロリコンなら良いけど、ペドフィリアだと、ちょっと困り者ですね。
男ですが、成人のイメージビデオですら理解できないので、ちょっと上手くアドバイスできません。

>適当に知らない子のを選んで買っているみたいです

正規に販売されているものの内は、まだ良いとして。
非合法な小児性愛を手に入れるようになったら、要注意ですね。


でも。
世の中、アニメとかの二次元に夢中になってる成人男子も多いですし、アイドルおたくも大勢いますし、程度の差はあれ、そういう嗜好の一種として受け入れて割り切った方が波風は立たないような…

QVB 6.0 PictureBox のプロパティに存在したScaleHeight ScaleWidthは.netには存在しない?

VB .netにてPictureBox コントロールを使用して
ライン描画を行なおうとしています。
VB 6.0の時には存在していたScaleHeigth,ScaleWidthのプロパティは.netには存在していないみたいですが何か変わるものは用意されていないでしょうか?
実際の表示幅(Height,Width)ではなくScaleHeigth,ScaleWidthを使用して細かいライン描画をしたいのですが、どなたか方法をご存知の方がいましたらよろしくお願いいたします。

Aベストアンサー

お世話になります。

参考URL の
●VB6のScaleHeight、ScaleWidthプロパティに代わるものは?
が参考になるかと思います。

参考URL:http://blog.mag2.com/m/log/0000104516/106897176?page=1

Qマンハッタン島のイメージビデオ

マンハッタンやニューヨーク中心街を紹介するような観光ビデオ・イメージビデオはありますでしょうか?
旅番組のものでもよいので、思い当たるビデオをご存じの方、どうか教えて下さい。お願いします!

Aベストアンサー

http://www.amazon.co.jp/o/ASIN/B000OPOEBW/503-9996432-4006349?SubscriptionId=1WRFWZTGTDY7RZW9QP82

http://www.creativesystemservices.net/japanese/cardboard.html


こういうサイトしか見つかりません。

QVB6の _ExtentX, _ExtentY

VB6 アプリケーションのメンテナンスをしています。
修正前後で FRM ファイルのソース差分をとって確認したところ、_ExtentX, ExtentY の値が変わっていました。

今回の修正ではいじっていないのですが、変わってしまいまってました。
名前から、水平方向と、垂直方向の領域に関するプロパティと思われるのですがどこで設定されているのか分かりません。

そこで、質問ですが

(1) このプロパティの意味は何でしょうでしょうか
(2) このプロパティ値が変わることによりどのような影響があるのでしょう
(3) このプロパティは意識する必要があるのでしょうか。

以上、ご教示願います。

Aベストアンサー

全くの素人ですが、

1 コントロール(フォーム?)のHIMETRIC単位によるwidthとheight
http://www.xtremevbtalk.com/showthread.php?t=10994
2 フォームのサイズが変わっているのではないでしょうか?
3 フォームは普通意図的にサイズ指定しているはずですので、意識の必要は無いと思います。

QデジカメとビデオカメラのCCDイメージセンサの違いは?

デジカメ、ビデオカメラの中に入っているCCDイメージセンサは、静止画用のデジカメと動画用のビデオカメラで構造が違うものなのでしょうか。私は、記録装置やレンズ系が違うだけで核となるCCDは同じものだと理解しているのですが間違った解釈でしょうか?詳しい方お教え願います。

Aベストアンサー

CCD自体は同じモノです。光を電気信号に変換するのがCCD。

ただし、受光した画像データを取り出す構造が違います。
スチルカメラはシャッターを開いた瞬間だけ信号が取り出せればいいのに対し、ビデオカメラは常に信号を取り出す必要があります。

さらに、スチルとビデオでは必要とする画素数が違います。
ビデオは基本的に30万画素あれば十分。スチルはご存じかと思いますが数百万画素。
高画質ハイビジョンだとしてもスチルカメラほど画素数は必要としません。

それと、CCDは長時間動作し続けると自身の発熱による赤外線を感知し画面周辺が赤っぽくなったりします。そのためCCDではなくC-MOSを使用しているカメラもあります。
CCDビデオカメラは何らかの方法で発熱を抑えているか放熱していると思います。

受光センサー自体は同じモノですが、周辺技術は異なっています。
それらはユニットとして組み込まれているので見た目は全く別物だったりします。

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

Q最近低年齢タレントのイメージビデオが出ていますが・・・

最近○○子10歳、○美8歳など、
小学校低学年の女の子が水着になったり卑わいなしぐさをさせるイメージビデオがたくさん出ていますが、昔からこういったものはあったんでしょうか?
それとも最近になって志向が小さい子供に向けられているという事でしょうか?
自分の子供をこういったビデオに出演させる親たちって何なんでしょうか・・・。

Aベストアンサー

『児童ポルノ法』1999年施行
上記を基準点とすると、
1999年以前は、東南アジア系の少女を、佐藤●●子(例)と名づけた、
N写真集は多数に出ていました。
それを抑制するため『児童ポルノ法』が施行されました。
ので、
2000年代に入って、低年齢少女写真集は一時的に市場から消えましたが、
2004年頃から、DVD映像として、また復活しました。
理由は、
DVDを小さな会社でも簡単に、安く製造販売できる世の中になったためだと思います。
1990年代は、写真集が主体ですので『外人』でもOKでした。
が、
DVDが主体の現代では『嘘』は出来ませんので『日本人』です。

※志向が小さい子供に向けられているという事でしょうか?
需要と供給=たくさん売れるから、たくさん製造する。

※自分の子供をこういったビデオに出演させる親たちって何なんでしょうか・・・。
出演料は、3万~8万円位(不明)だと思いますが、
無名な子供劇団などに所属のチャイドル(死語)だと思います。

QWorksheet_BeforeRighr\tClickの作成

現在勤務表を作成しています。
上記予定表と下記実績表を照らし合わせ、同じ場合は、上記のとおりに入力したいと思います。
A B C D E
1 あい えお
2
3 a   c d e
4
上記の表を作成しました。
ROW番号(A2,A4,A6)のROWを順次に右クリックした場合に、上の値を入力したいと思います。
private sub Worksheet_BeforeRightClick(ByVal Target As RAnge, Cancel AsBoolean)
if target.row=2 then
Worksheets("A").activate
Activecell=ActiveCell.Offset(-1,0).Value
Cancel=true
End if
End Sub
で作成しました。
A2セルは記入できますが、続いてA4,A6,A8と入力していきたいと思います。
セルは空欄もあります。
また、右クリックした場合、通常の右クリックで表示される、リストダウンも切り替えたいと思います。
回答、よろしくお願いします。

現在勤務表を作成しています。
上記予定表と下記実績表を照らし合わせ、同じ場合は、上記のとおりに入力したいと思います。
A B C D E
1 あい えお
2
3 a   c d e
4
上記の表を作成しました。
ROW番号(A2,A4,A6)のROWを順次に右クリックした場合に、上の値を入力したいと思います。
private sub Worksheet_BeforeRightClick(ByVal Target As RAnge, Cancel AsBoolean)
if target.row=2 then
Worksheets("A").activate
Activecell=ActiveCell.Offset(-1,0).Value
Cancel=true
End if
End ...続きを読む

Aベストアンサー

偶数行のセルでやりたいということですか?

private sub Worksheet_BeforeRightClick(ByVal Target As RAnge, Cancel AsBoolean)
  'if target.row=2 then
  if target.row mod 2 = 0 then
    Worksheets("A").activate
    Activecell=ActiveCell.Offset(-1,0).Value
    Cancel=true
  End if
End Sub
とすれば 偶数行にて実行されると思いますよ


人気Q&Aランキング

おすすめ情報