日前小虾使用Textout在Canvas上写字
想将字体的轮廓使用不同的颜色勾画
一下,不知各位大虾有和高见?分不够再加。
想将字体的轮廓使用不同的颜色勾画
一下,不知各位大虾有和高见?分不够再加。
解决方案 »
- 使用adquery+dbedit+dbgrid实现数据的增,删,改,查的具体代码,还有合并数据的功能,锁定数据
- delphi 7如何得到系统的显卡内存大小????????
- 急啊!帮我看看硬件通信问题
- 公式求解,逆向算法,大整数的四则运算
- 请问用idtcpserver做服务器时,在客户端连接的情况下怎么关闭服务器?老是会出错
- 在delphi6下如何安装fastreport3.25
- 请问在程序中如何强行关闭程序
- ADO连接SQLServer的简单问题
- 怎样模似鼠标移动,我想从一个坐标移动到另外一个坐标。 谢谢各位!
- 一个删除LISTVIEW的ITEMS的问题。。。
- 那位仁兄告诉我Menuxp从那下载
- 为什么出现[Error] Result := (nil as TMyObject)
这样不够简练,麻烦,有更好的意见吗?
失望。。
richedit1.PlainText:=false;
richedit1.Lines.LoadFromFile(extractfilepath(application.ExeName)+'a.rtf');
richedit1.Enabled:=false;
所要输出的文字放在a.rtf中就行了,这样你想要什么字体都可以在word中编辑了。
const
c_clrFrom = clRed;
c_clrTo = clBlue;
var
r: TRect;
i, j: Integer;
w: Integer;
k: Double;
l_hRgn: HRGN;
l_clrFill: TColor;
begin
BeginPath(Canvas.Handle);
Canvas.Font.Size := 72;
Canvas.Font.Name := '宋体';
Canvas.Brush.Style := bsClear;
r := Rect(0, 0, Width, Height);
DrawText(Canvas.Handle, PChar('TAXI'), -1, r, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
EndPath(Canvas.Handle); l_hRgn := PathToRegion(Canvas.Handle);
if l_hRgn <> 0 then
begin
GetRgnBox(l_hRgn, r);
w := r.Right - r.Left;
for i := r.Left to r.Right do
begin
k := (i - r.Left) / w;
l_clrFill := RGB(Round(GetRValue(c_clrFrom) * (1 - k) + GetRValue(c_clrTo) * k),
Round(GetGValue(c_clrFrom) * (1 - k) + GetGValue(c_clrTo) * k),
Round(GetBValue(c_clrFrom) * (1 - k) + GetBValue(c_clrTo) * k));
for j := r.Top to r.Bottom do
begin
if PtInRegion(l_hRgn, i, j) then
Canvas.Pixels[i, j] := l_clrFill;
end;
end;
DeleteObject(l_hRgn);
end;
end;
var
r: TRect;
i, j: Integer;
l_hRgn: HRGN;
begin
BeginPath(Canvas.Handle);
Canvas.Font.Size := 72;
Canvas.Font.Name := '宋体';
Canvas.Brush.Style := bsClear;
r := Rect(0, 0, Width, Height);
DrawText(Canvas.Handle, PChar('TAXI'), -1, r, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
EndPath(Canvas.Handle); l_hRgn := PathToRegion(Canvas.Handle);
if l_hRgn <> 0 then
begin
GetRgnBox(l_hRgn, r);
for i := r.Left to r.Right do
begin
for j := r.Top to r.Bottom do
begin
if PtInRegion(l_hRgn, i, j)
and ((not PtInRegion(l_hRgn, i - 1, j - 1))
or (not PtInRegion(l_hRgn, i, j - 1))
or (not PtInRegion(l_hRgn, i + 1, j - 1))
or (not PtInRegion(l_hRgn, i - 1, j))
or (not PtInRegion(l_hRgn, i + 1, j))
or (not PtInRegion(l_hRgn, i - 1, j + 1))
or (not PtInRegion(l_hRgn, i, j + 1))
or (not PtInRegion(l_hRgn, i + 1, j + 1))) then
Canvas.Pixels[i, j] := RGB(Random(255), Random(255), Random(255));
end;
end;
DeleteObject(l_hRgn);
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
{开始通道分组}
BeginPath(Canvas.Handle); {绘制一些文本}
SetBkMode(Canvas.Handle, TRANSPARENT);
Canvas.TextOut(10, 10, 'DELPHI ROCKS!'); {结束通道分组}
EndPath(Canvas.Handle);{初始化画笔来绘制通道轮廓}
Canvas.Pen.Color := clRed;
Canvas.Pen.Style := psSolid; {绘制通道轮廓}
StrokePath(Canvas.Handle);
end;
const
c_clrFrom = clRed;
c_clrTo = clYellow;
var
r: TRect;
i, j, w: Integer;
k: Double;
c: TColor;
l_hRgn: HRGN;
begin
BeginPath(Canvas.Handle);
Canvas.Font.Size := 72;
Canvas.Font.Name := '宋体';
Canvas.Brush.Style := bsClear;
r := Rect(0, 0, Width, Height);
DrawText(Canvas.Handle, PChar('TAXI'), -1, r, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
EndPath(Canvas.Handle); l_hRgn := PathToRegion(Canvas.Handle);
if l_hRgn <> 0 then
begin
GetRgnBox(l_hRgn, r);
w := r.Right - r.Left;
for i := r.Left to r.Right do
begin
for j := r.Top to r.Bottom do
begin
if PtInRegion(l_hRgn, i, j)
and ((not PtInRegion(l_hRgn, i - 1, j - 1))
or (not PtInRegion(l_hRgn, i, j - 1))
or (not PtInRegion(l_hRgn, i + 1, j - 1))
or (not PtInRegion(l_hRgn, i - 1, j))
or (not PtInRegion(l_hRgn, i + 1, j))
or (not PtInRegion(l_hRgn, i - 1, j + 1))
or (not PtInRegion(l_hRgn, i, j + 1))
or (not PtInRegion(l_hRgn, i + 1, j + 1))) then
begin
k := (i - r.Left) / w;
c := RGB(Round(GetRValue(c_clrFrom) * (1 - k) + GetRValue(c_clrTo) * k),
Round(GetGValue(c_clrFrom) * (1 - k) + GetGValue(c_clrTo) * k),
Round(GetBValue(c_clrFrom) * (1 - k) + GetBValue(c_clrTo) * k));
Canvas.Pixels[i, j] := c;
end;
end;
end;
DeleteObject(l_hRgn);
end;
end;