Qt,Qt5: fix menuitem.bitmap.transparent. issue #33122

git-svn-id: trunk@62882 -
This commit is contained in:
zeljko 2020-04-04 12:12:52 +00:00
parent 7a87464490
commit 7fd1c2feac
2 changed files with 40 additions and 2 deletions

View File

@ -103,6 +103,9 @@ end;
class function TQtWSMenuItem.CreateMenuFromMenuItem(const AMenuItem: TMenuItem): TQtMenu;
var
ImgList: TCustomImageList;
AImage: TQtImage;
AImgList: TImageList;
Bmp: TBitmap;
begin
Result := TQtMenu.Create(AMenuItem);
Result.FDeleteLater := False;
@ -129,7 +132,23 @@ begin
Result.setImage(TQtImage(AMenuItem.Bitmap.Handle));
end else
if Assigned(AMenuItem.Bitmap) then
Result.setImage(TQtImage(AMenuItem.Bitmap.Handle));
begin
AImage := TQtImage(AMenuItem.Bitmap.Handle);
if not AMenuItem.Bitmap.Transparent then
begin
AImgList := TImageList.Create(nil);
AImgList.Width := AMenuItem.Bitmap.Width;
AImgList.Height := AMenuItem.Bitmap.Height;
AImgList.AddMasked(AMenuItem.Bitmap, AMenuItem.Bitmap.Canvas.Pixels[0, AMenuItem.Bitmap.Height -1]);
Bmp := TBitmap.Create;
AImgList.GetBitmap(0, Bmp);
AImage := TQtImage(Bmp.Handle);
Result.setImage(AImage);
Bmp.Free;
AImgList.Free;
end else
Result.setImage(AImage);
end;
end else
Result.setImage(nil);
end;

View File

@ -102,6 +102,9 @@ end;
class function TQtWSMenuItem.CreateMenuFromMenuItem(const AMenuItem: TMenuItem): TQtMenu;
var
ImgList: TCustomImageList;
AImage: TQtImage;
Bmp: TBitmap;
AImgList: TImageList;
begin
Result := TQtMenu.Create(AMenuItem);
Result.FDeleteLater := False;
@ -128,7 +131,23 @@ begin
Result.setImage(TQtImage(AMenuItem.Bitmap.Handle));
end else
if Assigned(AMenuItem.Bitmap) then
Result.setImage(TQtImage(AMenuItem.Bitmap.Handle));
begin
AImage := TQtImage(AMenuItem.Bitmap.Handle);
if not AMenuItem.Bitmap.Transparent then
begin
AImgList := TImageList.Create(nil);
AImgList.Width := AMenuItem.Bitmap.Width;
AImgList.Height := AMenuItem.Bitmap.Height;
AImgList.AddMasked(AMenuItem.Bitmap, AMenuItem.Bitmap.Canvas.Pixels[0, AMenuItem.Bitmap.Height -1]);
Bmp := TBitmap.Create;
AImgList.GetBitmap(0, Bmp);
AImage := TQtImage(Bmp.Handle);
Result.setImage(AImage);
Bmp.Free;
AImgList.Free;
end else
Result.setImage(AImage);
end;
end else
Result.setImage(nil);
end;