使用以下方法,透明毛刺问题很严重,有什么方法可以改正,或是其它更好的方法procedure TForm1.FormCreate(Sender: TObject);
begin DoubleBuffered := True; // 设置跟 shckwvflash 控件宽高和xy 一致
bmpBuf := TBitmap.Create;
bmpBuf.PixelFormat := pf24bit;
bmpBuf.Transparent := False;
bmpBuf.Width := shckwvflsh1.Width;
bmpBuf.Height := shckwvflsh1.Height;
img1.Width := shckwvflsh1.Width;
img1.Height := shckwvflsh1.Height;
img1.Top := shckwvflsh1.Top;
img1.Left := shckwvflsh1.Left;
img1.Transparent := True;
shckwvflsh1.Visible := False;
// shckwvflsh1.Movie := 'c:\1.swf';
shckwvflsh1.Movie:='C:\Documents and Settings\Administrator\桌面\瑜伽2\Flash\yoga\1.swf';
end;procedure TForm1.FormResize(Sender: TObject);
begin
Repaint;
end;procedure TForm1.FormPaint(Sender: TObject);
begin
bmpFormBg := TBitmap.Create;
bmpFormBg.LoadFromFile('C:\Documents and Settings\Administrator\桌面\素材\Main.bmp');
Canvas.StretchDraw(ClientRect, bmpFormBg);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
bmpBuf.Free;
bmpFormBg.Free;
end;procedure TForm1.tmr1Timer(Sender: TObject);
begin
shckwvflsh1.PaintTo(bmpBuf.Canvas, 0, 0);
bmpBuf.Canvas.Brush.Style := bsClear;
bmpBuf.Transparent := True;
img1.Picture.Bitmap.Assign(bmpBuf);
end;透明毛刺问题
begin DoubleBuffered := True; // 设置跟 shckwvflash 控件宽高和xy 一致
bmpBuf := TBitmap.Create;
bmpBuf.PixelFormat := pf24bit;
bmpBuf.Transparent := False;
bmpBuf.Width := shckwvflsh1.Width;
bmpBuf.Height := shckwvflsh1.Height;
img1.Width := shckwvflsh1.Width;
img1.Height := shckwvflsh1.Height;
img1.Top := shckwvflsh1.Top;
img1.Left := shckwvflsh1.Left;
img1.Transparent := True;
shckwvflsh1.Visible := False;
// shckwvflsh1.Movie := 'c:\1.swf';
shckwvflsh1.Movie:='C:\Documents and Settings\Administrator\桌面\瑜伽2\Flash\yoga\1.swf';
end;procedure TForm1.FormResize(Sender: TObject);
begin
Repaint;
end;procedure TForm1.FormPaint(Sender: TObject);
begin
bmpFormBg := TBitmap.Create;
bmpFormBg.LoadFromFile('C:\Documents and Settings\Administrator\桌面\素材\Main.bmp');
Canvas.StretchDraw(ClientRect, bmpFormBg);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
bmpBuf.Free;
bmpFormBg.Free;
end;procedure TForm1.tmr1Timer(Sender: TObject);
begin
shckwvflsh1.PaintTo(bmpBuf.Canvas, 0, 0);
bmpBuf.Canvas.Brush.Style := bsClear;
bmpBuf.Transparent := True;
img1.Picture.Bitmap.Assign(bmpBuf);
end;透明毛刺问题
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered := True; bmpBuf := TBitmap.Create;
bmpBuf.PixelFormat := pf24bit;
bmpBuf.Transparent := False;
bmpBuf.Width := shckwvflsh1.Width;
bmpBuf.Height := shckwvflsh1.Height; img1.Width := shckwvflsh1.Width;
img1.Height := shckwvflsh1.Height;
img1.Top := shckwvflsh1.Top;
img1.Left := shckwvflsh1.Left;
img1.Transparent := True;
shckwvflsh1.Quality := 0; // 设置低质量可以消除毛边,但是flash画质下降
shckwvflsh1.Visible := False;
shckwvflsh1.Movie := ExtractFilePath(Application.ExeName) + '1.swf';
end;明天有空再研究研究
值设为pf15bit,基本可以忽略毛刺的问题.这个可能取决你的Flash来设置了.我也是一个一个试过来的
另外我这边一点都不闪。
新问题,如何判断在ShockwaveFlash控件上字母A一直是按下状态.
pf15bit 我这里刚刚好,16bit都有比较明显,24bit就很大.
这贴我结了,solelie哥接分
首先建立一个swf文件,容器.swf
并写一个接口和外部程序通讯,
通过接口,外部程序可以加载swf能识别的文件到画面上显示(包括图像,声音,swf影片...好多好多).
虽然可以直接把外部swf引入容器中一起编译,不过我想你肯定要动态变换外部swf,所以用这个方法.Delphi中,首先装入 容器.swf,然后通过接口,装入背景,然后装入你那个swf不就行了,透明,渐变,图像填充,画质....一切问题全部搞定,不是最好不过了?事件也可以通过接口转到Delphi中.....如需要,可以纸条发过来
LS蓝大佬要给你搞了,快去PM,测试解决问题后share上来
我刚刚也下载了dswfsdk.exe,准备看看里面的demo呢,发现居然乜有DEMO、碎嚼,碎嚼
http://shckwvflsh1.BackgroundColor
http://bbs.csdn.net/topics/390455730?page=1#post-394481047