如何得到一汉字的镜像(50分)

  • 主题发起人 主题发起人 enong
  • 开始时间 开始时间
E

enong

Unregistered / Unconfirmed
GUEST, unregistred user!
如何得到一汉字的镜像,是否有这样的字体?
 
没听说过。
 
先把汉字放到一个label控件上,再用Tlabel.canvas.pixles[x,y]读出每一个点的颜色值
 
镜像指的是什么?
 
就象从镜子中看字一样,将它打印出来。
edisons的办法能否再讲明白些?
 
读像素的方法太慢,连M$都推荐不用这种方法,用ScanLine吧!
 
pxie同志怎么用SCANLINE能给我讲讲吗?
 
procedure GetMirror(S:string);
var a:array[0..99,0..99] of boolean;
i,j:byte;

begin

with label1do
begin

height:=100;
width:=100;
color:=clWhite;
pen.color:=clBlack;
caption:=s;
for i:=0 to 99do

for j:=0 to 99do

a[i,j]:=canvas.pixels[i,j]=clBlack;
end;

end;

//A中存储的就是S的镜像

 
金山词霸使用的是什么?
问问他们!
 
var
Bmp1, Bmp2: TBitmap;
Ptr1, Ptr2: PByteArray;
i, j: Integer;
begin

Bmp1 := TBitmap.Create;
Bmp2 := TBitmap.Create;
try
Canvas.Font.Name := '宋体';
Canvas.Font.Height := 100;
Bmp1.Width := Canvas.TextWidth('我');
Bmp1.Height := Canvas.TextHeight('我');
Bmp1.Canvas.Font := Canvas.Font;
Bmp1.Canvas.TextOut(0, 0, '我');
Bmp1.PixelFormat := pf8Bit;
Bmp1.SaveToFile('c:/a.bmp');
Bmp2.Width := Bmp1.Width;
Bmp2.Height := Bmp1.Height;
Bmp2.PixelFormat := pf8Bit;
for i := 0 to Bmp1.Height - 1do
begin

Ptr1 := Bmp1.ScanLine;
Ptr2 := Bmp2.ScanLine;
for j := 0 to Bmp1.Width - 1do

Ptr2[j] := Ptr1[Bmp1.Width - j - 1];
end;

Bmp2.SaveToFile('c:/b.bmp');
finally
Bmp1.Free;
Bmp2.Free;
end;

end;
 
JohnsonGuo的方法很好.谢谢
 
后退
顶部