我需要能够使用Delphi XE5(更新2)控制Android平板电脑上像素的RGB值。可以使用SetPixel过程设置像素值。但是,在仔细检查时,位图的像素值可能略微偏离。例如,在表单上使用单个TImage和以下代码:
procedure TForm1.FormCreate(Sender: TObject);
var vBitMapData : TBitmapData;
x,y: Integer;
begin
Image1.WrapMode := TImageWrapMode.iwOriginal;
Image1.Bitmap := TBitmap.Create(125,125);
if image1.Bitmap.Map(TMapAccess.maReadWrite, vBitMapData) then
for y := 0 to Image1.Bitmap.Height-1 do
begin
for x := 0 to Image1.Bitmap.Width-1 do
begin
if odd(x) then vBitMapData.SetPixel(x,y,claWhite)
else vBitMapData.SetPixel(x,y,claBlack);
end;
end;
image1.Bitmap.Unmap(vBitMapData);
end;
平板电脑上出现黑白光栅(我正在使用Nexus 10),但是在使用电源和音量调低按钮制作屏幕截图并通过电子邮件将生成的png发送到我的Windows电脑后,光栅似乎有了不仅RGB值为(0,0,0)和(255,255,255),还有(1,1,1)和(254,254,254)。
有谁知道为什么我没有得到所有真正的黑白条纹?据我所知,png是无损的,并且在Win32上运行相同的程序会产生正确的结果,因此它似乎与android实现特别相关。
对正在发生的事情的任何建议或解决方法都会很棒。
原始(1px) 5像素测试