﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-pengyi-随笔分类-Delphi专区</title><link>http://www.blogjava.net/yinfo/category/15492.html</link><description>The Java is the apple of my eye. 
                                    Java is learning......</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 22:57:00 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 22:57:00 GMT</pubDate><ttl>60</ttl><item><title>用delphi编写图片播放组件</title><link>http://www.blogjava.net/yinfo/archive/2006/09/21/71058.html</link><dc:creator>pengyi</dc:creator><author>pengyi</author><pubDate>Thu, 21 Sep 2006 04:45:00 GMT</pubDate><guid>http://www.blogjava.net/yinfo/archive/2006/09/21/71058.html</guid><wfw:comment>http://www.blogjava.net/yinfo/comments/71058.html</wfw:comment><comments>http://www.blogjava.net/yinfo/archive/2006/09/21/71058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yinfo/comments/commentRss/71058.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yinfo/services/trackbacks/71058.html</trackback:ping><description><![CDATA[用delphi编写图片播放组件（原创）－－－－－转载请写明出处<br />{ ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />::  Author：pengyi    Email:pengyi.yi@126.com    ::<br />:: ::<br />:: Unit : UnitImagePlay ::<br />:: ::<br />:: Developer Team : Mdcl DevTeam ::<br />:: $Id: UnitImagePlay.pas,v 1.13 2006/07/13 08:22:24 Exp $ ::<br />:: ::<br />:: Created Date : 2005-12-8 ::<br />:: Last Modified: $Date: 2006/07/13 08:22:24 $ ::<br />:: Last Modifier: $Author:pengyi $ ::<br />:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: }<br /><br />unit UnitImagePlay; 
<p>interface<br />uses Messages, Windows, SysUtils, Classes, CutlineU,<br />Controls, Forms, ExtCtrls, Graphics, StdCtrls, Dialogs;<br />type<br />TXPImage = class;</p><p>TShowPicture = class(TThread)<br />private<br />Fidx: integer; {当时显示的数}<br />//I:integer;<br />FItem: TXPImage;<br />protected<br />procedure Execute; override;<br />public<br />procedure SetPicture;<br />constructor Create(Aowner: TXPImage);<br />end;</p><p>TXPImage = class(TComponent)<br />private<br />FActive: Boolean; //当前是否击活<br />FInterval: Integer;<br />//FTimer :TTimer;<br />FImgbmp: TBitmap;<br />//FImage: TImage;<br />FImage: TCutline;<br />FImageList: TImageList;<br />FshowPic: TShowPicture;<br />procedure SetActive(Value: Boolean); virtual;<br />procedure SetInterval(Value: Integer);<br />procedure SetImageList(Value: TImageList);<br />procedure SetImage(Value: TCutline);<br />public<br />constructor Create(AOwner: TComponent); override;<br />destructor Destroy; override;<br />procedure Start;<br />// Procedure Pause;<br />//Procedure Continue;<br />procedure Stop;<br />property Active: Boolean read FActive write SetActive;<br />property Interval: Integer read FInterval write SetInterval;<br />property Imgbmp: TBitmap read FImgbmp write FImgbmp;<br />property ImageList: TImageList read FImageList write SetImageList;<br />//Property Image:TImage Read FImage Write SetImage;<br />property Image: TCutline read FImage write SetImage;</p><p>//Property showPic:TShowPicture Read FshowPic;<br />end;</p><p>implementation</p><p>uses<br />CommonU, DbugIntf;</p><p>{ TXPImage }</p><p>constructor TXPImage.Create(AOwner: TComponent);<br />begin<br />inherited;<br />FInterval := 800;<br />FImgbmp := TBitmap.Create;<br />//FImage := TCutline.Create(AOwner);<br />//FImageList := TImageList.Create(AOwner);<br />//FTimer := TTimer.Create(AOwner);<br />//FImage := TImage.Create(AOwner);<br />end;</p><p>destructor TXPImage.Destroy;<br />begin<br />if Assigned(FImgbmp) then<br />FImgbmp.Free;<br />//FTimer.Free;<br />//FImage.Free;<br />//FImageList.Free;<br />inherited;<br />end;</p><p>procedure TXPImage.SetActive(Value: Boolean);<br />begin<br />FActive := Value;<br />if (FshowPic &lt;&gt; nil) and Value then<br />FshowPic := TShowPicture.Create(Self)<br />else<br />FshowPic.Terminate;<br />end;</p><p>procedure TXPImage.SetImageList(Value: TImageList);<br />begin<br />FImageList := Value;<br />end;</p><p>procedure TXPImage.SetInterval(Value: Integer);<br />begin<br />FInterval := value;<br />end;</p><p>procedure TXPImage.SetImage(Value: TCutline);<br />begin<br />FImage := Value;<br />end;</p><p>procedure TXPImage.Start;<br />begin<br />FActive := true;<br />//创建线程<br />FshowPic := TShowPicture.Create(Self);<br />//FshowPic.Resume;<br />end;</p><p>procedure TXPImage.Stop;<br />begin<br />//FActive:= false;<br />if FshowPic &lt;&gt; nil then<br />begin<br />FshowPic.Terminate;<br />FshowPic := nil;<br />end;<br />end;</p><p>{procedure TXPImage.Continue;<br />begin<br />IF FshowPic&lt;&gt; nil then<br />begin<br />FActive:= true;<br />FshowPic.Resume;<br />end;<br />end;</p><p>procedure TXPImage.Pause;<br />begin<br />IF FshowPic&lt;&gt; nil then<br />FActive:= false;<br />end;}</p><p>{ TShowPicture }</p><p>constructor TShowPicture.Create(Aowner: TXPImage);<br />begin<br />inherited Create(false);<br />FItem := Aowner;<br />Fidx := 0;<br />FreeOnTerminate := true;<br />end;</p><p>procedure TShowPicture.Execute;<br />//var<br />// nTickCount: Cardinal;<br />begin<br />inherited;<br />while not Terminated do<br />begin<br />if FItem.Active then<br />begin<br />//Application.ProcessMessages;<br />synchronize(SetPicture); {注意此处}<br />Fidx := Fidx + 1;<br />if Fidx &gt;= FItem.FImageList.Count then<br />Fidx := 0;<br />if terminated then<br />exit;<br />//Item.;<br />Sleep(FItem.FInterval);</p><p>// nTickCount := GetTickCount;<br />// while FItem.Active and (GetTickCount - nTickCount &lt; FItem.FInterval) do<br />// Application.ProcessMessages;<br />end<br />else<br />begin<br />Suspend;<br />end;<br />end;<br />end;</p><p>procedure TShowPicture.SetPicture;<br />var<br />sMsg: string;<br />begin<br /><br />//SendMethodEnter(Format('“%s” 播放动画中的设置图片', [FItem.Image.Caption]));<br />if FItem.Imgbmp &lt;&gt; nil then<br />begin<br />try<br />//SendDebug('开始从 Imagelist 中获取图片');<br />FItem.FImageList.GetBitmap(Fidx, FItem.Imgbmp);<br />//SendDebug('完成从 Imagelist 中获取图片');<br />//FItem.FImageList.GetBitmap(Fidx,FItem.FImage.Picture.Bitmap);<br />//SendDebug('开始从把图片给 Cutline 图片');<br />FItem.Image.SetImage(FItem.Imgbmp);<br />//SendDebug('完成从把图片给 Cutline 图片');<br />//SendDebug('开始刷新 Cutline');<br />//FItem.FImage.Refresh;<br />//SendDebug('完成刷新 Cutline');<br />application.ProcessMessages;<br />except<br />on E: Exception do<br />begin<br />sMsg := Format('错误位置：[%s] 类：[%s] 名称：[%s] 错误类：[%s] 错误信息：[%s]',<br />['播放动画' ,ClassName, FItem.Image.Caption, E.ClassName, E.Message]);<br />SendDebugEx(sMsg, mtError);<br />WriteLog(sMsg);<br />end;<br />end;<br />end;<br />//SendMethodExit(Format('“%s” 播放动画中的设置图片', [FItem.Image.Caption]));<br />//SendSeparator;</p><p>end;</p><p>end.</p><img src ="http://www.blogjava.net/yinfo/aggbug/71058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yinfo/" target="_blank">pengyi</a> 2006-09-21 12:45 <a href="http://www.blogjava.net/yinfo/archive/2006/09/21/71058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>