質問するログイン新規登録

回答編集履歴

2

修正

2020/01/16 01:24

投稿

Wind
Wind

スコア442

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  32bitカラーで330x330のグレースケールを描画する場合を、
2
- 元のソースコードに加筆しました。(8bitグレースケールも試した後なので、汚いですが)
2
+ 元のソースコードに加筆しました。(8bitグレースケールの再現と対策も試した後なので、汚いですが)
3
3
  ```C#
4
4
  int Gwidth = 330;
5
5
  // int Gwidth = 332; // 8bitグレースケールは4バイト境界なので横のサイズを4の倍数(332等)にするしか無い
@@ -10,14 +10,12 @@
10
10
  // 32bitカラーを使用する場合
11
11
  byte[] Gdata = new byte[Gwidth * 4 * Gheight];
12
12
 
13
- for(int h = 0; h < Gheight; h++) {
13
+ for(int h = 0; h < Gheight; h++)
14
- for (int w = 0; w < Gwidth * 4; w++) {
14
+ for (int w = 0; w < Gwidth * 4; w++)
15
15
  if(w % 4 != 3)
16
16
  Gdata[h * Gwidth * 4 + w] = (byte)225; // グレースケールの色
17
17
  else
18
18
  Gdata[h * Gwidth * 4 + w] = (byte)255; // 透過度(255固定)
19
- }
20
- }
21
19
 
22
20
  // Bitmap Gimg = new Bitmap(Gwidth, Gheight, PixelFormat.Format8bppIndexed);
23
21
  Bitmap Gimg = new Bitmap(Gwidth, Gheight, PixelFormat.Format32bppArgb);

1

修正

2020/01/16 01:24

投稿

Wind
Wind

スコア442

answer CHANGED
@@ -1,12 +1,13 @@
1
1
  32bitカラーで330x330のグレースケールを描画する場合を、
2
- 元のソースコードに加筆しました。
2
+ 元のソースコードに加筆しました。(8bitグレースケールも試した後なので、汚いですが)
3
3
  ```C#
4
4
  int Gwidth = 330;
5
5
  // int Gwidth = 332; // 8bitグレースケールは4バイト境界なので横のサイズを4の倍数(332等)にするしか無い
6
6
  int Gheight = 330;
7
7
 
8
+ // 8bitグレースケール
9
+ // byte[] Gdata = new byte[Gwidth * Gheight];
8
- // 32bitカラーで実現する場合
10
+ // 32bitカラーを使用する場合
9
-
10
11
  byte[] Gdata = new byte[Gwidth * 4 * Gheight];
11
12
 
12
13
  for(int h = 0; h < Gheight; h++) {