C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

メモリ(ピクセルデータ)をポインタで読む方法について


(過去ログ 5 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■5581 / inTopicNo.1)  メモリ(ピクセルデータ)をポインタで読む方法について
  
□投稿者/ みやせ 二等兵(1回)-(2006/08/17(Thu) 11:16:07)

分類:[C#] 


分類:[C#] 

開発環境 OS:WindowsXP
     Microsoft Visual Studio 2005

初めまして。

メモリ(ピクセルデータ)をポインタで読む方法でポインタが最初に示す位置の設定がよくわからなかったので今回投稿させていただきました。

ピクセルデータを読み込む場合にポインタの初期の位置を左下や右下や右上に自由に変更することは可能でしょうか。

現在Stride関数を用いてポインタを取得しています。

Bitmap bmp = new Bitmap(w, h, PixelFormat.Format32bppArgb);

Rectangle rect = new Rectangle(0, 0, w, h);

BitmapData BD = bmp.LockBits(rect, ImageLockMode.ReadWrite, bmp.PixelFormat);

stride = BD.Stride;

Byte* p = (Byte*)(void*)BD.Scan0;

p += stride * (h - 1);

このようにして原点が左下から読み込むことはできたのですがそのほかに移動させる方法が思いつきません。
何か良い方法がありましたらよろしくお願いします。


0
引用返信 編集キー/
■5587 / inTopicNo.2)  Re[1]: メモリ(ピクセルデータ)をポインタで読む方法について
□投稿者/ Hongliang 軍曹(78回)-(2006/08/17(Thu) 12:11:09)
Hongliang さんの Web サイト

分類:[C#] 

自前で計算する必要があります。
バイトデータの並びは常に一定です。

0
引用返信 編集キー/
■5588 / inTopicNo.3)  Re[2]: メモリ(ピクセルデータ)をポインタで読む方法について
□投稿者/ みやせ 二等兵(2回)-(2006/08/17(Thu) 12:41:56)

分類:[C#] 

No5587に返信(Hongliangさんの記事)
返信ありがとうございます。Hongliangさん

> 自前で計算する必要があります。
とは
p += stride * (h - 1);のところをかえればなんとかなるということでしょうか。

すいません、何分初心者のものでもう少し具体的に教えてくれるとうれしいです。



0
引用返信 編集キー/
■5597 / inTopicNo.4)  Re[3]: メモリ(ピクセルデータ)をポインタで読む方法について
□投稿者/ YAS 軍曹(63回)-(2006/08/17(Thu) 21:02:41)

分類:[C#] 

みやせさん,こんばんは。
具体的には次のようになると思います。

//右上
p += stride - BD.Stride / BD.Width;
//右下
p += stride * h - BD.Stride / BD.Width;

C#はあまり詳しくはないのですが,これはアンセーフコードになるのですよね。
マネージコードではどうしてもできない処理なのですか?


0
引用返信 編集キー/
■5611 / inTopicNo.5)  Re[4]: メモリ(ピクセルデータ)をポインタで読む方法について
□投稿者/ みやせ 二等兵(3回)-(2006/08/18(Fri) 09:16:16)

分類:[C#] 

No5597に返信(YASさんの記事)

YASさんおはようございます。返答ありがとうございます。

> C#はあまり詳しくはないのですが,これはアンセーフコードになるのですよね。
> マネージコードではどうしてもできない処理なのですか?
>

コード自体を私が書いたものじゃありませんので詳しくはわかりませんがおそらくポインタを使用しているのでアンセーフモードにする必要があるもののと考えられます。さっそく返答をいただいたのですが上記の式ではうまくできませんでした。
なぜ上記の式のようになるのか私にはわかりません。説明いただけないでしょうか。よろしくお願いします。

0
引用返信 編集キー/
■5616 / inTopicNo.6)  Re[5]: メモリ(ピクセルデータ)をポインタで読む方法について
□投稿者/ みやせ 二等兵(4回)-(2006/08/18(Fri) 11:27:21)

分類:[C#] 

Hongliangさん、YASさんありがとうございます。
やはりYASさんたちがいうようにすることで解決することができました。私の初歩的なミスでした。またよろしくお願いします。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -