1

画像を作成するにはどうすればよいですか?また、16進色のコードを使用してピクセルごとに色を付けるにはどうすればよいですか?

例:100x100ピクセルの画像を作成したいのですが、1x1の領域の色は「$ 002125」、2x2の領域の色は「$ 125487」にしたいと思います。どうすればよいですか?

ご回答ありがとうございます。

4

1 に答える 1

4

簡単なサンプルを作成しました。ScanlineではなくCanvas.Pixelsを使用します。Scanlineの方が高速ですが、最初は問題ないと思います。色はランダムに生成されるため、コードのこの部分を置き換える必要があります。

    procedure TForm1.GenerateImageWithRandomColors;
    var
      Bitmap: TBitmap;
      I, J: Integer;
      ColorHEX: string;

    begin
      Bitmap := TBitmap.Create;
      Randomize;

      try
        Bitmap.PixelFormat := pf24bit;
        Bitmap.Width := 100;
        Bitmap.Height := 100;

        for I := 0 to Pred(Bitmap.Width) do
        begin
          for J := 0 to Pred(Bitmap.Height) do
          begin
            Bitmap.Canvas.Pixels[I, J] := RGB(Random(256),
               Random(256),
               Random(256));

            // get the HEX value of color and do something with it
            ColorHEX := ColorToHex(Bitmap.Canvas.Pixels[I, J]);
          end;
        end;

        Bitmap.SaveToFile('test.bmp');
      finally
        Bitmap.Free;
      end;
    end;

function TForm1.ColorToHex(Color : TColor): string;
begin
  Result :=
     IntToHex(GetRValue(Color), 2) +
     IntToHex(GetGValue(Color), 2) +
     IntToHex(GetBValue(Color), 2);
end;
于 2012-07-30T20:51:07.077 に答える