【发布时间】:2014-08-21 05:24:12
【问题描述】:
下面的代码应该创建一个 48x48 矩形的位图,蓝色背景色和一个水平和垂直居中的白色文本(实际上只是一个字母)。
但是什么也没发生。
procedure MakeCustomIcon(AText: string; AWidth: Integer; AHeight: Integer; AColor: TAlphaColor; var ABlob: TBlob);
var
Bitmap: TBitmap;
Rect: TRectF;
InStream: TMemoryStream;
begin
Bitmap := TBitmap.Create;
InStream := TMemoryStream.Create;
try
Bitmap.SetSize(AWidth, AHeight);
Bitmap.Canvas.Clear(AColor);
Bitmap.Canvas.Stroke.Kind := TBrushKind.bkSolid;
Bitmap.Canvas.StrokeThickness := 1;
Bitmap.Canvas.Fill.Color := TAlphaColorRec.White;
Bitmap.Canvas.BeginScene;
Rect.Create(0, 0, AWidth, AHeight);
Bitmap.Canvas.FillText(Rect, AText, true, 100, [TFillTextFlag.ftRightToLeft], TTextAlign.taCenter, TTextAlign.taCenter);
Bitmap.Canvas.EndScene;
Bitmap.SaveToStream(InStream);
InStream.Position := 0;
ABlob.Clear;
ABlob.LoadFromStream(InStream);
finally
Bitmap.Free;
InStream.Free;
end;
我已经测试了我的程序的其余部分,以确保图像(那个 Blob)实际上正在传输和显示,并且它正在这样做。问题完全包含在上面的方法中绘制位图的方式上。
这个 TBlob 是一个字节数组。
我希望在 TListView 中使用如下所示的矩形:
【问题讨论】:
标签: delphi bitmap firemonkey delphi-xe6