私は次のことをしようとしています:
bmp := TBitmap.Create;
bmp.Width := FWidth;
bmp.Height := FHeight;
for y := 0 to FHeight - 1 do
begin
sl := bmp.ScanLine[y];
for x := 0 to FWidth - 1 do
begin
//draw to the scanline, one pixel at a time
end;
end;
//display the image
bmp.Free;
残念ながら、最終的には、適切に色付けされた最終行を除いて、完全に白い画像になります。ScanLine
少しデバッグすると、プロパティにアクセスするたびにが呼び出さTBitmap.FreeImage
れ、if (FHandle <> 0) and (FHandle <> FDIBHandle) then
ブロックに入り、イメージ全体がリセットされるため、最後の行への変更のみが実際に適用されることがわかります。
を使用してこれまでに見たすべてのデモではTBitmap.ScanLine
、画像をロードすることから始めます。(明らかに、これはさまざまなハンドルを正しく設定して、これが起こらないようにしますか?) しかし、私は画像を読み込んで作業しようとしているわけではありません。カメラから画像データをキャプチャしようとしています。
最初にイメージをロードしなくてもスキャンラインに描画できるようにビットマップを設定するにはどうすればよいですか?