浏览代码

#451 ignore color when alpha 0 with solid color

circular17 3 年之前
父节点
当前提交
a3e1b9d825
共有 1 个文件被更改,包括 9 次插入1 次删除
  1. 9 1
      lazpaint/lazpaintinstance.pas

+ 9 - 1
lazpaint/lazpaintinstance.pas

@@ -1888,9 +1888,17 @@ begin
 end;
 
 procedure TLazPaintInstance.ColorToFChooseColor;
+var
+  c: TBGRAPixel;
 begin
   if not Assigned(FChooseColor) or InColorFromFChooseColor then exit;
-  FChooseColor.SetCurrentColor(GetColor(FChooseColor.ColorTarget));
+  c := GetColor(FChooseColor.ColorTarget);
+  if (c.alpha = 0) and (FChooseColor.ColorTarget in [ctForeColorSolid, ctBackColorSolid, ctOutlineColorSolid]) then
+  begin
+    c := FChooseColor.GetCurrentColor;
+    c.alpha := 0;
+  end;
+  FChooseColor.SetCurrentColor(c);
 end;
 
 procedure TLazPaintInstance.ExitColorEditor;