图象上滚动透明字体?如何解决 请教如何在IMAGE显示的图象上显示透明滚动的字母。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在TImage上动态画会出现闪烁,改为直接画到canvas上吧unit Unit3;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;type TForm1 = class(TForm) Image1: TImage; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } function SetLCDRGN(aRECT: TRECT): HRGN; public { Public declarations } end;var Form1: TForm1; RGN: HRGN; PosX, PosY: Integer;implementation{$R *.dfm}function TForm1.SetLCDRGN(aRECT: TRECT): HRGN;var rTemp, r: HRGN; x, y: integer;begin Result := CreateRectRgn(0, 0, 0, 0); for y := aRECT.Top to aRECT.Bottom do if (y mod 4) = 0 then for x := aRECT.Left to aRECT.Right do begin if (x mod 4) = 0 then begin rTemp := CreateRectRgn(x, y, x + 3, y + 3); CombineRgn(Result, Result, rTemp, RGN_OR);// CombineRgn(r, r, rTemp, RGN_XOR); end; end; DeleteObject(rTemp);end;procedure TForm1.FormCreate(Sender: TObject);begin RGN := SetLCDRGN(RECT(10, 10, 600, 200)); PosX := 600; PosY := 10; Show; SelectClipRgn(Canvas.Handle, RGN); Canvas.FillRect(RECT(10, 10, 600, 200));end;procedure TForm1.Timer1Timer(Sender: TObject);begin SelectClipRgn(Canvas.Handle, RGN); PosX := PosX - 4; if PosX < 10 - Image1.Picture.Width then PosX := 600; Canvas.Draw(PosX, PosY, Image1.Picture.Graphic);end;end.-------------------------------------------------------本回复由大傻的破玩意儿【CSDN's forum Explorer】完成!软件功能强大,速度超快!!支持中...软件下载地址:http://CoolSlob.ys168.com /to xzhifei你转載的方法虽然可行,不过如果我的字体的边上有半透明的像素,請问你怎么弄这个半透明的 我的建议还是图像32位叠加,至于抗闪烁,弄一个缓冲区Bitmap,把所以移动的图,字,都32位叠加到缓冲区,最后再一次性复制显示 一个语法问题,想了好找时间了 delphi中的内存拷贝函数是什么啊? 谁有明华读卡器的操作例程(SEL4442)100分 我想将一个Edit中的内容复制到一个字符数组中,请问这个都可以用什么方法实现 Xleep(笑尽天下事) 进来看看~~~ 一个小问题 用DSPACK操作摄像头,怎么捕获摄像头上的拍照按键的消息? ntfs系统的目录问题,救命啊。谁知道我给500分 如何控制edit框中输入的字符为0.00-9.99 寻合作开发"网上证券行情客户端软件"的高手。 如何获取网络连接状态、时间、速度???? 为什么外国人的软件都这么强??
unit Unit3;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
function SetLCDRGN(aRECT: TRECT): HRGN;
public
{ Public declarations }
end;var
Form1: TForm1;
RGN: HRGN;
PosX, PosY: Integer;
implementation{$R *.dfm}function TForm1.SetLCDRGN(aRECT: TRECT): HRGN;
var
rTemp, r: HRGN;
x, y: integer;
begin
Result := CreateRectRgn(0, 0, 0, 0);
for y := aRECT.Top to aRECT.Bottom do
if (y mod 4) = 0 then
for x := aRECT.Left to aRECT.Right do
begin
if (x mod 4) = 0 then
begin
rTemp := CreateRectRgn(x, y, x + 3, y + 3);
CombineRgn(Result, Result, rTemp, RGN_OR);
// CombineRgn(r, r, rTemp, RGN_XOR);
end;
end;
DeleteObject(rTemp);end;procedure TForm1.FormCreate(Sender: TObject);
begin
RGN := SetLCDRGN(RECT(10, 10, 600, 200));
PosX := 600;
PosY := 10;
Show;
SelectClipRgn(Canvas.Handle, RGN);
Canvas.FillRect(RECT(10, 10, 600, 200));
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
SelectClipRgn(Canvas.Handle, RGN);
PosX := PosX - 4;
if PosX < 10 - Image1.Picture.Width then
PosX := 600; Canvas.Draw(PosX, PosY, Image1.Picture.Graphic);end;end.
-------------------------------------------------------
本回复由大傻的破玩意儿【CSDN's forum Explorer】完成!
软件功能强大,速度超快!!支持中...
软件下载地址:http://CoolSlob.ys168.com
你转載的方法虽然可行,不过如果我的字体的边上有半透明的像素,
請问你怎么弄这个半透明的
我的建议还是图像32位叠加,至于抗闪烁,弄一个缓冲区Bitmap,把所以移动的图,字,都32位叠加到缓冲区,最后再一次性复制显示