画像処理ソリューション
これを見れば画像処理の入門から基礎~応用まで全てがわかるのを目指して!
   
翻訳(Translate)

プロフィール

Akira

ニックネーム:Akira
東京都の町田事業所に勤務
画像処理ソフトの開発を行っています。リンクフリーです!
詳細プロフィールは こちら
お問い合わせは、こちら↓

【補助HP】
画像処理ソリューションWeb版 【Newブログ】
イメージングソリューション

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

09 | 2017/10 | 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

趣味のブログ

iPhone萬歳!
iPhoneの情報いろいろ。
ブログ学習帳
ブログ、SEO、アフィリエイト情報など(まだまだこれから)
俺流クラフト日記
ハンドメイド作品の記録(現在、放置中)

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

VB6.0でポインタを扱う

 目次ページへ

VB6.0では基本的にはポインタは扱えない事になっていますが、全く、扱えない訳ではありません。

■配列からポインタ(先頭アドレス)を取得する。
 先頭アドレスを取得する関数はVarPtrというのがあり
 Dim Buf(99, 99) as Byte
 としたときのポインタ(先頭アドレス)は
 
 Dim ptr as Long
 prt = VarPtr(Buf(0, 0))

 で取得可能

■ポインタ(先頭アドレス)をAPIへ渡す。
 APIの宣言の型は as Any として例えばこんな感じ↓
 
 Public Declare Function StretchDIBits Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal wSrcWidth As Long, ByVal wSrcHeight As Long, lpBits As Any, lpBitsInfo As BITMAPINFO, ByVal wUsage As Long, ByVal dwRop As Long) As Long


 呼び出す側はポインタ(先頭アドレス)にByValを付けて渡す

 Call StretchDIBits(hdc, 0, 0, dstWidth, sdtHeight, 0, 0, srcWidth, srcHeight, ByVal ptr, BmpInfo, 0, SRCCOPY)

■ポインタで管理可能なメモリを確保する。
 メモリの確保には、VirtualAlloc関数を使って、戻り値をポインタとして扱う


 ptr = VirtualAlloc(ByVal 0&, BufSize, MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE)

 もちろん、使い終わったら開放するのを忘れないように

 Call VirtualFree(ByVal ptr, 0, MEM_RELEASE)

 という感じで。

■確保したメモリ(ポインタ)の中身を参照する。
 これはさすがにそのままでは参照することができないので、配列にコピーしてから参照するしかないようです。

 '参照用のメモリ確保
 Dim Buf(99, 99) as Byte

 Call CopyMemory(Buf(0, 0), ByVal ptr, 100* 100)

 とします。

基本的にはVBでポインタ的な扱いはしない方が良いとは思いますが、画像処理用ライブラリには画像データをポインタで渡すようになっていたり、画像データ用のメモリを何画面分確保すれば良いのか?事前に分からない場合などは、どうしてもポインタで管理したくなる場合もあるので、参考まで。


Loading...
スポンサーリンク

この記事に対するコメント

この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://imagingsolution.blog107.fc2.com/tb.php/69-b1645681
この記事にトラックバックする(FC2ブログユーザー)

現在の閲覧者数: / 合計