Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


27641 / 76732 ←次へ | 前へ→

【54408】Re:Formに描画(API LineTo など)した絵をBitMapで保存できますか?
発言  VBWASURETA  - 08/3/12(水) 2:49 -

引用なし
パスワード
   ▼みそじのおじさん さん:

続いて解析2です。

HPのソースですが。すみません見つけたもののぱっと見で使えそうだったので、
参考資料として載せました。API詳しそうでしたから。

とにかく、解析してみますね。もしかしたら違うところがあるかもしれませんが。
仕事柄からか画像データ解析が多いんです^^;

因みにこのソース見ている限り、24ビット形式(ビットマップ)にしかだめそうです。
確かJPEGとBITMAPのヘッダーサイズは異なっていたはずです。


'GetObjectのAPIは画面に貼り付けられたBITMAPのヘッダーサイズを指定してヘッダー情報構造体に値を取得しています。
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long

'GetBitmapBitsのAPIは画面に貼り付けられたBitmapデータつまりバイナリデータを配列に入れてますね。因みにByValは値の送り側、付いて無いのは戻り値として定義されています。このように覚えると見やすくなるかもです。
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long

'SetBitmapBitsのAPIは逆にBitmapデータつまりバイナリデータの配列から該当のピクチャボックスに設定します。
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long

Private Type BITMAP                                   'BITMAP構造体
    bmType As Long     'タイプ
    bmWidth As Long    '横サイズ
    bmHeight As Long    '縦サイズ
    bmWidthBytes As Long  '横サイズのバイト単位
    bmPlanes As Integer  'プレーン数
    bmBitsPixel As Integer '1ピクセルあたりのバイト数(bmp形式なので1バイトです。当然なのですけどね。ビットマップは未圧縮なのですから)
    bmBits As Long     'ポインタ
End Type

Dim Img() As Byte                                    'ピクセルデータ保存用

Private Sub UserForm_Click()
  Dim bmp As BITMAP, x As Long, y As Long
  
  'ビットマップのヘッダー情報取得
  GetObject Image1.Picture.Handle, Len(bmp), bmp                  'ビットマップ情報取得

  'ここでビットマップのバイナリデータサイズ分のサイズを二次元配列で再定義
  ReDim Img(bmp.bmWidthBytes - 1, bmp.bmHeight - 1)                  '配列サイズ変更

  'ビットマップのサイズ分バイナリデータをImgの二次元配列にセット
  GetBitmapBits Image1.Picture.Handle, bmp.bmWidthBytes * bmp.bmHeight, Img(0, 0)  '画像取込

  'ビットマップ縦サイズのループ
  For y = 0 To bmp.bmHeight - 1

    'ビットマップ横サイズのループ
    For x = 0 To bmp.bmWidthBytes - 1
      Img(x, y) = Not Img(x, y)                          '反転処理
    Next
  Next

  '1バイトずつバイナリデータを反転した後にピクチャボックスにセット
  SetBitmapBits Image1.Picture.Handle, bmp.bmWidthBytes * bmp.bmHeight, Img(0, 0)  '画像書込
End Sub
1 hits

【54392】Formに描画(API LineTo など)した絵をBitMapで保存できますか? みそじのおじさん 08/3/11(火) 14:51 質問
【54394】Re:Formに描画(API LineTo など)した絵を... みそじのおじさん 08/3/11(火) 15:42 質問
【54395】Re:Formに描画(API LineTo など)した絵を... VBWASURETA 08/3/11(火) 16:15 回答
【54396】Re:Formに描画(API LineTo など)した絵を... neptune 08/3/11(火) 16:19 発言
【54398】Re:Formに描画(API LineTo など)した絵を... みそじのおじさん 08/3/11(火) 17:38 質問
【54399】Re:Formに描画(API LineTo など)した絵を... VBWASURETA 08/3/11(火) 17:45 発言
【54401】Re:Formに描画(API LineTo など)した絵を... みそじのおじさん 08/3/11(火) 18:49 質問
【54403】Re:Formに描画(API LineTo など)した絵を... VBWASURETA 08/3/11(火) 20:58 発言
【54408】Re:Formに描画(API LineTo など)した絵を... VBWASURETA 08/3/12(水) 2:49 発言
【54435】Re:Formに描画(API LineTo など)した絵を... みそじのおじさん 08/3/12(水) 19:32 質問
【54437】Re:Formに描画(API LineTo など)した絵を... VBWASURETA 08/3/12(水) 23:04 発言
【54438】Re:Formに描画(API LineTo など)した絵を... neptune 08/3/12(水) 23:21 発言
【54439】Re:Formに描画(API LineTo など)した絵を... neptune 08/3/12(水) 23:23 発言
【54451】Re:Formに描画(API LineTo など)した絵を... みそじのおじさん 08/3/13(木) 16:08 発言
【54454】Re:Formに描画(API LineTo など)した絵を... VBWASURETA 08/3/13(木) 17:52 発言
【54461】Re:Formに描画(API LineTo など)した絵を... みそじのおじさん 08/3/13(木) 22:30 発言
【54462】Re:Formに描画(API LineTo など)した絵を... VBWASURETA 08/3/14(金) 0:34 発言
【54463】Re:Formに描画(API LineTo など)した絵を... VBWASURETA 08/3/14(金) 1:19 発言
【54452】Re:Formに描画(API LineTo など)した絵を... neptune 08/3/13(木) 16:20 発言
【54404】Re:Formに描画(API LineTo など)した絵を... neptune 08/3/11(火) 21:23 発言
【54450】Re:Formに描画(API LineTo など)した絵を... yuu1 08/3/13(木) 15:56 回答
【54464】Re:Formに描画(API LineTo など)した絵を... VBWASURETA 08/3/14(金) 9:15 発言
【54548】Re:Formに描画(API LineTo など)した絵を... みそじのおじさん 08/3/18(火) 11:32 お礼
【54550】Re:Formに描画(API LineTo など)した絵を... yuu1 08/3/18(火) 12:55 回答
【54551】Re:Formに描画(API LineTo など)した絵を... neptune 08/3/18(火) 14:55 発言
【54552】Re:Formに描画(API LineTo など)した絵を... VBWASURETA 08/3/18(火) 15:53 発言
【54559】Re:Formに描画(API LineTo など)した絵を... みそじのおじさん 08/3/19(水) 10:59 お礼
【54560】Re:Formに描画(API LineTo など)した絵を... neptune 08/3/19(水) 13:03 発言

27641 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free