我试图改变位图的像素颜色,如果它是白色的.我写了以下代码.但它非常慢!我想检查像素的颜色是否为白色,如果是白色,则将颜色更改为黑色.
任何人都可以提出更好的方法吗?
procedure TForm1.Button1Click(Sender: TObject);
var
BitMap1 : TBitmap;
X, Y, Size : Integer;
P: Cardinal;
begin
BitMap1 := TBitmap.Create;
bitMap1.LoadFromFile('image1.bmp');
for Y := 0 to Bitmap1.Height - 1 do
begin
for X := 0 to Bitmap1.width * size - 1 do
begin
p := BitMap1.Canvas.Pixels[X,Y];
if p = 255 then
BitMap1.Canvas.Pixels[X,Y] := 0;
end;
end;
Image1.Picture.Assign(BitMap1);
end;
Run Code Online (Sandbox Code Playgroud) 我有这个代码,看看我的前景窗口是否是SDImainframe.
Function Active_window_mf() :Boolean;
var
FromClass: PChar;
begin
MFhandle := GetForeGroundWindow;
GetMem(FromClass, 100);
GetClassName(MFhandle, PChar(FromClass), 800);
if StrPas(FromClass) = 'SDIMainFrame' then
result := true;
end;
Run Code Online (Sandbox Code Playgroud)
但是,MADExcept报告Getmem功能存在问题.任何人都可以建议,我的代码有什么问题?