gpt4 book ai didi

delphi dbgrid 绘制单元格图像黑色背景

转载 作者:行者123 更新时间:2023-12-02 07:36:23 25 4
gpt4 key购买 nike

使用 TImage 列表中的图像在 DBGrid 中的数据单元格上绘制字形时出现问题:

我将“复选标记”的 bmp 图像代替特定数据单元格中的文本“完成”。它有效,但细胞中未被图像覆盖的部分始终存在黑色。我尝试过放大 bmp 图像的像素大小以匹配单元格大小,但它似乎总是为我调整图像大小。使用Delphi 10.2,在D7中没有问题吗?

尝试过设置背景颜色、笔和画笔颜色等的多种组合。以下是一个代码尝试的简单示例:

procedure TFUpRepWS.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with Column do begin
if ((FieldName = 'Done') and (Field.AsString = 'x')) then begin
//below shows black outside of check mark image in the cell
ImageList1.Draw(DBGrid1.Canvas,Rect.Left,Rect.Top,0)
end
else DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;

最佳答案

执行默认的单元格绘制 DefaultDrawColumnCell总是。这将确保单元格看起来与其他单元格相同。然后绘制图像。试试这个:

procedure TFUpRepWS.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with Column do
begin
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
if ((FieldName = 'Done') and (Field.AsString = 'x')) then
ImageList1.Draw(DBGrid1.Canvas, Rect.Left, Rect.Top, 0);
end;
end;

我猜你所描述的情况会发生,因为没有代码可以绘制单元格背景。

关于delphi dbgrid 绘制单元格图像黑色背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44288906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com