就像很多的网页上用的透明FLASH 非常漂亮的那种比如游动的金鱼啊什么的 怎么在Delphi窗体上显示呢?

解决方案 »

  1.   

    也许使用透明背景的gif图片可是实现一种透明背景的动画,至于flash就不太清楚了
      

  2.   

    是由FLASH决定的。而不是在DELPHI中实现。
      

  3.   

    应该不好做,delphi不是做网页的工具呀。你的意思是不是flash在底层动,flash的上层还可以放文字,控件什么的?
      

  4.   

    用Flash+Dreamweaver做好网页,然后用WebBrowser调用在窗体上显示。
      

  5.   

    FLASH做好,可以顯示FLASH的組件可以滿足條件,或者窗體透明,然後放FLASH的GIF文件.
      

  6.   

    举个例子: QQ的魔法表情....完全用程序实现的这个东西似乎Flash那个控件本身的缺陷,我感觉实现比较困难的不过国外有人弄出来了,有一个TFlashPlayerControl控件,可以实现,不过源代码卖499$!!!~~~
      

  7.   

    QQ的魔法表情 就是用Flash做的 QQ下面有一个播放器 直接将程序参数设置成swf文件可以播放我做过这样的程序,只能告诉你原理1、捕获Flash的WM_PAINT消息
    2、获得Flash的画面,通过背景色处理成不规则区域并将Flash窗体设置为该区域参考API函数:CombineRgn()、ExtCreateRegion()、SetWindowRgn()等
      

  8.   

    单元文件:
    unit Unit1;interfaceuses
      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.Top := ShockwaveFlash1.Top;
          ARect.Right := ARect.Left + ShockwaveFlash1.Width;
          ARect.Bottom := ARect.Top + 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.Top,ShockwaveFlash1.Left+ShockwaveFlash1.Width,ShockwaveFlash1.Top+ShockwaveFlash1.Height),ACanvas,ARect);
          ACanvas.Draw(ShockwaveFlash1.Left,ShockwaveFlash1.Top,Buffer);
          ReleaseDC(Form1.Handle,ACanvas.Handle);
          ACanvas.Free;
        end;
    end;end.窗体文件:
    object Form1: TForm1
      Left = 192
      Top = 114
      Width = 870
      Height = 640
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      DesignSize = (
        862
        606)
      PixelsPerInch = 96
      TextHeight = 13
      object ShockwaveFlash1: TShockwaveFlash
        Left = 537
        Top = 360
        Width = 81
        Height = 81
        Anchors = [akRight, akBottom]
        TabOrder = 0
        Visible = False
        ControlData = {
          67556655100700005F0800005F08000008000200000000000800000000000800
          0000000008000E000000570069006E0064006F00770000000B00FFFF0B00FFFF
          08000A0000004800690067006800000008000200000000000B00FFFF08000200
          0000000008000E00000061006C00770061007900730000000800100000005300
          68006F00770041006C006C0000000B0000000B00000008000200000000000800
          02000000000008000200000000000D0000000000000000000000000000000000
          0B0001000B000000080000000000030000000000}
      end
      object Timer1: TTimer
        Interval = 100
        OnTimer = Timer1Timer
        Left = 40
        Top = 520
      end
    end窗体上有两个控件,
    一个Timer,另一个是ShockwaveFlash1,注意设置ShockwaveFlash1的Visible的属性为False
      

  9.   

    5多嘴一句。全都冒用的,要从TOleControl改。网上美金$299有售。
      

  10.   

    to  hqhhh(枫叶) 你的程序有些问题,几个rect作标似乎有问题我弄好之后,运行出来闪烁很厉害啊,难不成还得用多线程双缓冲可能是可以的,我再试试
      

  11.   

    在canvas.draw 前加一句话就不闪烁了ACanvas.FillRect(Rect(ShockwaveFlash1.Left,ShockwaveFlash1.Top,ShockwaveFlash1.Left+ShockwaveFlash1.Width,ShockwaveFlash1.Top+ShockwaveFlash1.Height));
      

  12.   

    回复人: zswang(伴水清清)(专家门诊清洁工) ( ) 信誉:175  2006-1-9 21:26:51  得分: 0  
     
     
       
    QQ的魔法表情 就是用Flash做的 QQ下面有一个播放器 直接将程序参数设置成swf文件可以播放我做过这样的程序,只能告诉你原理1、捕获Flash的WM_PAINT消息
    2、获得Flash的画面,通过背景色处理成不规则区域并将Flash窗体设置为该区域参考API函数:CombineRgn()、ExtCreateRegion()、SetWindowRgn()等  
     =============================================请问该如何获得flash画面呢?