A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ビットマップイメージのバイト列は既に生成されている、という認識でよいでしょうか?
BITMAPFILEHEADERを含むBITMAPイメージデータを byte[] bitmapimage で持っているとした場合、
Bitmap bmp = new Bitmap(new System.IO.MemoryStream(bitmapimage));
pictureBox1.Image = bmp;
でビットマップを作成して、ピクチャーボックスに設定することで画像を表示できます。
ビットマップイメージを作るのが面倒という場合は、
Bitmap bmp = new Bitmap(width, height, pixelformat);
で無地のビットマップを作成して、
BitmapData bmpdata = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
IntPtr ptr = bmpdata.Scan0;
とすることにより、パターンのデータ配列を取得できるのでデータ配列をコピーすればよいと思います。
ただし、この方法ですとパレットを操作する方法はちょっと分かりませんでした。
この回答への補足
i-kujouさん、ありがとうございます。
やはり、パレットのイメージは作成できないのでしょうか…。
そのところをクリアしたかったのですが、もう少し
方法を探ってみます。
引き続き、よろしくお願いいたします。
No.1
- 回答日時:
こんばんは。
例えば、ピクチャーボックスが有り、ボタンが押されたら、データから読み込んでピクチャーボックスに表示される様にする場合、Bitmapクラスをパターン(イメージデータ)のサイズに合わせて作成し、ループで回転しながらパターンからデータを読んでSetPixel()で色彩を設定してあげれば良いのでは?
ただし、スピードは素晴らしく遅いみたいです。以下参考程度に。
//ボタンが押されたら・・・
private void button1_Click(object sender, EventArgs e)
{
//色彩テーブル(本当は何処かから引っ張ってくる)
byte[,,] rgbTable = new byte[96, 64, 3];
//ビットマップクラスの作成
Bitmap bitmap = new Bitmap(96, 64);
//ループで回転して書き込む
for (int y = 0; y < bitmap.Height; ++y)
{
for (int x = 0; x < bitmap.Width; ++x)
{
//0がR、1がG、2がB
Color color = Color.FromArgb(rgbTable[x, y, 0], rgbTable[x, y, 1], rgbTable[x, y, 2]);
//色彩をビットマップにセットする
bitmap.SetPixel(x, y, color);
}
}
//ピクチャーボックスにビットマップクラスを渡す
this.pictureBox1.Image = bitmap;
//ピクチャーボックスの画面を更新する
this.pictureBox1.Invalidate();
}
この回答への補足
machongolaさん、ご返答ありがとうございます。
速度的に遅いというのは、少し問題です。
また、説明に書き忘れましたが、Directではなく
IndexのImageで扱えるほうが希望です。
再び質問の継続をいたします。
わざわざお答えいただいたのに、すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Excel(エクセル) エクセルで対象日に該当するデータがある場合に別表へ全対象者を表示させたい。 3 2023/07/12 09:48
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) Excelグラフについて 1 2022/06/16 16:06
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
- Access(アクセス) Access2016のExcelインポートの機能のことで教えてください 1 2022/09/11 14:58
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Excel(エクセル) iphonからone driveに保存してあるExcelを閲覧すると表示の仕方がちがうデータ 2 2022/12/21 13:51
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
Listviewのデータを上から順番...
-
【ASP.NET MVC】一覧編集画面
-
DataGrdViewに関連付けたデータ...
-
スプレッドシート 一括でQRコー...
-
Highchartsの更新方法
-
.NET SqlDataReader のレコー...
-
GASでスプレッドシートの一番上...
-
MSFlexGridのデータ表示位置の設定
-
GridViewにバインドせずにデー...
-
C# データ配列から画像を作成す...
-
ASP.Net ObjectDataSource
-
VB.net CrystalReportでプロジ...
-
VBAでページ番号、ページ最終行...
-
アクセス2003 データベー...
-
Sub 要具ライフ() ActiveSheet....
-
ExcelVBAを使って、値...
-
VBA listBoxについて
-
VBAでActiveDirectoryのユーザ...
-
Accessのクエリで、replace関数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
Listviewのデータを上から順番...
-
.NET SqlDataReader のレコー...
-
GASでスプレッドシートの一番上...
-
GridViewにバインドせずにデー...
-
MSFlexGridのデータ表示位置の設定
-
【ASP.NET MVC】一覧編集画面
-
VBAでページ番号、ページ最終行...
-
DataGridViewで表示に制限をつ...
-
エクセルマクロ小数点桁数
-
VBによる可変長ファイルの読み書き
-
ASP.NET DataGridの項目数(列...
-
XMLWebサービス
-
VBSやVBAでXMLファイルを読み込...
-
VB.net CrystalReportでプロジ...
-
GridViewを自動的にスクロール...
-
ASP.Net ObjectDataSource
-
データリカバリーについて ファ...
-
VBA ピボットテーブル自動更新
おすすめ情報