flash如何透明 我用D7,装了Flash控件,但是加载flash的时候为什么不能透明。设了 wmode属性还是不好使。另外新版的csdn如何搜索啊,我都不会用了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, ShockwaveFlashObjects_TLB, ExtCtrls; type TForm1 = class(TForm) ShockwaveFlash1: TShockwaveFlash; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } Buffer : TBitmap; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Buffer := TBitmap.Create; Buffer.Width := ShockwaveFlash1.Width; Buffer.Height := ShockwaveFlash1.Height; ShockwaveFlash1.Movie :='D:\temp\flash.swf'; ShockwaveFlash1.Play; end; procedure TForm1.Timer1Timer(Sender: TObject); var ARect : TRect; ACanvas : TCanvas; begin if ShockwaveFlash1.Playing then begin ACanvas := TCanvas.Create; ACanvas.Handle := GetDC(Form1.Handle); ARect.Left := ShockwaveFlash1.Left - ShockwaveFlash1.Width; ARect. := ShockwaveFlash1. ; ARect.Right := ARect.Left + ShockwaveFlash1.Width; ARect.Bottom := ARect. + ShockwaveFlash1.Height; Buffer.Transparent := False; ShockwaveFlash1.PaintTo(Buffer.Canvas,0,0); Buffer.PixelFormat := pf24bit; Buffer.Canvas.Brush.Style := bsClear; Buffer.Transparent := True; ACanvas.CopyRect(Rect(ShockwaveFlash1.Left,ShockwaveFlash1. ,ShockwaveFlash1.Left+ShockwaveFlash1.Width,ShockwaveFlash1. +ShockwaveFlash1.Height),ACanvas,ARect); ACanvas.Draw(ShockwaveFlash1.Left,ShockwaveFlash1. ,Buffer); ReleaseDC(Form1.Handle,ACanvas.Handle); ACanvas.Free; end; end; end. 当然也可以用Flash+Dreamweaver做好网页然后用WebBrowser调用在窗体上显示这样也能透明,不过可能程序要大些 感谢 brightyang ,你的方法是可行的。但是我担心占资源,有没有更好的办法了?在网页中实现透明很容易啊,在delphi中为啥这么费劲呢 那个不是delphi的问题,是flash控件的原因可以把它改写一下。。 to brightyang, 请问你的代码中Timer间隔多长时间。 delphi 控件hide 大家都进来谈谈程序员的赚钱门道及出路 出差回来,看到gogle走了,发帖纪念一下 用控件TREEVIEW 编写好目录树,如何编写相应的响应代码呀 关于cxListView控件的几个小问题 如何实现编辑状态下两个数据集之间的赋值。请帮忙! 关于局域网短信群发(SOCKET)的问题,见者有分!!!!!!!!!!! 如何实现自已的窗体永远浮现在屏幕的某个位置 delhi用ADO连接加密码的MDB数据库的问题 生成Form时遇到的问题。 wise打包好的程序中数据库驱动问题 treeview实现图标的动态显示?急!急!急!
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, ShockwaveFlashObjects_TLB, ExtCtrls;
type
TForm1 = class(TForm)
ShockwaveFlash1: TShockwaveFlash;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
Buffer : TBitmap;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Buffer := TBitmap.Create;
Buffer.Width := ShockwaveFlash1.Width;
Buffer.Height := ShockwaveFlash1.Height;
ShockwaveFlash1.Movie :='D:\temp\flash.swf';
ShockwaveFlash1.Play;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
ARect : TRect;
ACanvas : TCanvas;
begin
if ShockwaveFlash1.Playing then
begin
ACanvas := TCanvas.Create;
ACanvas.Handle := GetDC(Form1.Handle);
ARect.Left := ShockwaveFlash1.Left - ShockwaveFlash1.Width;
ARect. := ShockwaveFlash1. ;
ARect.Right := ARect.Left + ShockwaveFlash1.Width;
ARect.Bottom := ARect. + ShockwaveFlash1.Height;
Buffer.Transparent := False;
ShockwaveFlash1.PaintTo(Buffer.Canvas,0,0);
Buffer.PixelFormat := pf24bit;
Buffer.Canvas.Brush.Style := bsClear;
Buffer.Transparent := True;
ACanvas.CopyRect(Rect(ShockwaveFlash1.Left,ShockwaveFlash1. ,ShockwaveFlash1.Left+ShockwaveFlash1.Width,ShockwaveFlash1. +ShockwaveFlash1.Height),ACanvas,ARect);
ACanvas.Draw(ShockwaveFlash1.Left,ShockwaveFlash1. ,Buffer);
ReleaseDC(Form1.Handle,ACanvas.Handle);
ACanvas.Free;
end;
end;
end.
Flash+Dreamweaver做好网页
然后用WebBrowser调用在窗体上显示
这样也能透明,不过可能程序要大些
可以把它改写一下。。