以下のプログラムは、Form画面のあるボタンを押した際に画面中央にR, G, Bのコード値から混色された色を
輝度が高い順に表示するために書いたコードです。
Luminance_pair[Count][0]に輝度の情報となる数値を入れて、昇順にするために
Array.Sort(Luminance_pair, (double a, double b) => a[0] - b[0]);
でソートして並び替えようと思ったのですが、
Array.Sort(Luminance_pair, (double a, double b) => a[0] - b[0]);
の行でエラーが出てしまいました。
デリゲート型ではないため ラムダ式 を型 'System.Array' に変換できません
Luminance_pair[Count][0]部分で昇順に並び替えるには、どのようにコードを変更すればよろしいでしょうか。
namespace Sample { public partial class Form1 : Form { //描画するものの情報 int rect_x = 250; int rect_y = 250; //スクリーンの中心を表示 int screen_width = Screen.PrimaryScreen.Bounds.Width; int screen_height = Screen.PrimaryScreen.Bounds.Height; int [] Color_Volume_Code = new int[9] {0, 32, 64, 96, 128, 160, 192, 224, 255}; double [][] Luminance_pair = new double[386][]; int Count = 0; private void ColorVolume_Measure(object sender, EventArgs e) { for(int b=0; b<9; b++){ for(int g=0; g<9; g++){ for(int r=0; r<9; r++){ if(r==0||r==8||g==0||g==8||b==0||b==8){ Luminance_pair[Count] = new double[4];//Lv, r, g, b Luminance_pair[Count][0] = r + 4.59 * g + 0.06 * b; Luminance_pair[Count][1] = Color_Volume_Code[r]; Luminance_pair[Count][2] = Color_Volume_Code[g]; Luminance_pair[Count][3] = Color_Volume_Code[b]; Count++; } } } } Array.Sort(Luminance_pair, (double a, double b) => a[0] - b[0]); for(int i=0; i<386; i++) { Graphics g = this.CreateGraphics(); SolidBrush BlackBrush = new SolidBrush(Color.FromArgb((int)Luminance_pair[i][1], (int)Luminance_pair[i][2], (int)Luminance_pair[i][3])); g.FillEllipse(BlackBrush, screen_width/2-rect_x/2, screen_height/2-rect_y/2, rect_x, rect_y); BlackBrush.Dispose(); g.Dispose(); } } } }
エラーの内容と発生個所を省略せず正確に記入してください。