用delphi編寫圖片播放組件(原創)-----轉載請寫明出處
{ ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::? Author:pengyi??? Email:pengyi.yi@126.com??? ::
:: ::
:: Unit : UnitImagePlay ::
:: ::
:: Developer Team : Mdcl DevTeam ::
:: $Id: UnitImagePlay.pas,v 1.13 2006/07/13 08:22:24 Exp $ ::
:: ::
:: Created Date : 2005-12-8 ::
:: Last Modified: $Date: 2006/07/13 08:22:24 $ ::
:: Last Modifier: $Author:pengyi $ ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: }
unit UnitImagePlay;
interface
uses Messages, Windows, SysUtils, Classes, CutlineU,
Controls, Forms, ExtCtrls, Graphics, StdCtrls, Dialogs;
type
TXPImage = class;
TShowPicture = class(TThread)
private
Fidx: integer; {當時顯示的數}
//I:integer;
FItem: TXPImage;
protected
procedure Execute; override;
public
procedure SetPicture;
constructor Create(Aowner: TXPImage);
end;
TXPImage = class(TComponent)
private
FActive: Boolean; //當前是否擊活
FInterval: Integer;
//FTimer :TTimer;
FImgbmp: TBitmap;
//FImage: TImage;
FImage: TCutline;
FImageList: TImageList;
FshowPic: TShowPicture;
procedure SetActive(Value: Boolean); virtual;
procedure SetInterval(Value: Integer);
procedure SetImageList(Value: TImageList);
procedure SetImage(Value: TCutline);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Start;
// Procedure Pause;
//Procedure Continue;
procedure Stop;
property Active: Boolean read FActive write SetActive;
property Interval: Integer read FInterval write SetInterval;
property Imgbmp: TBitmap read FImgbmp write FImgbmp;
property ImageList: TImageList read FImageList write SetImageList;
//Property Image:TImage Read FImage Write SetImage;
property Image: TCutline read FImage write SetImage;
//Property showPic:TShowPicture Read FshowPic;
end;
implementation
uses
CommonU, DbugIntf;
{ TXPImage }
constructor TXPImage.Create(AOwner: TComponent);
begin
inherited;
FInterval := 800;
FImgbmp := TBitmap.Create;
//FImage := TCutline.Create(AOwner);
//FImageList := TImageList.Create(AOwner);
//FTimer := TTimer.Create(AOwner);
//FImage := TImage.Create(AOwner);
end;
destructor TXPImage.Destroy;
begin
if Assigned(FImgbmp) then
FImgbmp.Free;
//FTimer.Free;
//FImage.Free;
//FImageList.Free;
inherited;
end;
procedure TXPImage.SetActive(Value: Boolean);
begin
FActive := Value;
if (FshowPic <> nil) and Value then
FshowPic := TShowPicture.Create(Self)
else
FshowPic.Terminate;
end;
procedure TXPImage.SetImageList(Value: TImageList);
begin
FImageList := Value;
end;
procedure TXPImage.SetInterval(Value: Integer);
begin
FInterval := value;
end;
procedure TXPImage.SetImage(Value: TCutline);
begin
FImage := Value;
end;
procedure TXPImage.Start;
begin
FActive := true;
//創建線程
FshowPic := TShowPicture.Create(Self);
//FshowPic.Resume;
end;
procedure TXPImage.Stop;
begin
//FActive:= false;
if FshowPic <> nil then
begin
FshowPic.Terminate;
FshowPic := nil;
end;
end;
{procedure TXPImage.Continue;
begin
IF FshowPic<> nil then
begin
FActive:= true;
FshowPic.Resume;
end;
end;
procedure TXPImage.Pause;
begin
IF FshowPic<> nil then
FActive:= false;
end;}
{ TShowPicture }
constructor TShowPicture.Create(Aowner: TXPImage);
begin
inherited Create(false);
FItem := Aowner;
Fidx := 0;
FreeOnTerminate := true;
end;
procedure TShowPicture.Execute;
//var
// nTickCount: Cardinal;
begin
inherited;
while not Terminated do
begin
if FItem.Active then
begin
//Application.ProcessMessages;
synchronize(SetPicture); {注意此處}
Fidx := Fidx + 1;
if Fidx >= FItem.FImageList.Count then
Fidx := 0;
if terminated then
exit;
//Item.;
Sleep(FItem.FInterval);
// nTickCount := GetTickCount;
// while FItem.Active and (GetTickCount - nTickCount < FItem.FInterval) do
// Application.ProcessMessages;
end
else
begin
Suspend;
end;
end;
end;
procedure TShowPicture.SetPicture;
var
sMsg: string;
begin
//SendMethodEnter(Format('“%s” 播放動畫中的設置圖片', [FItem.Image.Caption]));
if FItem.Imgbmp <> nil then
begin
try
//SendDebug('開始從 Imagelist 中獲取圖片');
FItem.FImageList.GetBitmap(Fidx, FItem.Imgbmp);
//SendDebug('完成從 Imagelist 中獲取圖片');
//FItem.FImageList.GetBitmap(Fidx,FItem.FImage.Picture.Bitmap);
//SendDebug('開始從把圖片給 Cutline 圖片');
FItem.Image.SetImage(FItem.Imgbmp);
//SendDebug('完成從把圖片給 Cutline 圖片');
//SendDebug('開始刷新 Cutline');
//FItem.FImage.Refresh;
//SendDebug('完成刷新 Cutline');
application.ProcessMessages;
except
on E: Exception do
begin
sMsg := Format('錯誤位置:[%s] 類:[%s] 名稱:[%s] 錯誤類:[%s] 錯誤信息:[%s]',
['播放動畫' ,ClassName, FItem.Image.Caption, E.ClassName, E.Message]);
SendDebugEx(sMsg, mtError);
WriteLog(sMsg);
end;
end;
end;
//SendMethodExit(Format('“%s” 播放動畫中的設置圖片', [FItem.Image.Caption]));
//SendSeparator;
end;
end.
posted @
2006-09-21 12:45 pengyi 閱讀(753) |
評論 (2) |
編輯 收藏
有關英語學習的一點體會(原創)
-----
歡迎大家拍磚
?????????????? Beth
(
bethz@263.net
)
??????? (
轉載請注明作者,否則保留追究的權力
)
???
記得我一個老師說過
“English is a friend that never betrays you.”
,既然如此,那么大家何不交這么一個朋友呢。下面我講一講自己有關英語的學習體會,多是個人的經驗之談,不一定就正確,歡迎切磋。
???
現在的時代,要學的東西太多,在時間有限的情況下,講究一點實用主義沒有壞處。所以就英語學習而言,也不妨有的放矢。英語學習的目的不同,作法的側重點也有差異。下面我簡單分為兩類來談:
1
。應試型。
2
。應用提高型。
一.
?
應試型
???
這種情況往往是被動的學習,而且時間上受到限制,多見于學校的等級考試與社會上種種名目的資格考試。因為主要是應付考試,甚至考完拉倒,所以更有必要講究一點所謂的
“
技巧
”
,免得占用太多的時間。
每種名目考試要求的層次不同,出題的風格也不同。所以為在最短的時間內取得最好的效果,不妨首先在這兩個方面分析一下。多數考試都有多有大綱或指導之類的書籍,這些書多數還是發起考試的單位所著,這些書上面額往往寫得很清楚:詞匯量要求達到多少
(
比如四級是
5000~6000,
六級
6000~8000
,考個四級非要背
10000
詞未免跟自己過不去
)
,有的甚至還附一個詞匯表;題型都有哪幾類,聽力、閱讀、還有語法占的比例都有多大,難度和速度要求怎樣,多數還都有考試樣題作參考。做上一兩套,稍微分析一下就能得出來的。比如國產的考試很注重語法和閱讀。而國外的考試則更注重聽力和讀寫,即使有語法題也出得非常簡單。實在沒有這種經典資料,也往往有
“
眾人拾柴火焰高
”
性質的東西可尋,如
“
熱心
”
的過來人寫的經驗心得(幾乎各個方面的都有:比如閱讀的體裁、題材、出題模式分析等等),甚至提供的第一手考試資料(如
GT
機經),這些也很管用的。雖然這本身反映了一種不合理的現象,但不妨入鄉隨俗嘛。這方面就不多說了。
二.應用提高型
???
這種情況多是為了提高日常交往英語能力或者某個專業領域的英語應用能力。往往個人的學習主動性更強一些,時間的隨意性也較強。所以可以更好的作個規劃,講究一點循序漸進的科學方法甚至趣味性。
首先要說得一點:學好一門語言的法寶永遠都是
“
使用
”
二字。但作為二外甚至三外的學者往往恰恰缺乏這樣一個環境,也即缺乏語境。好在現在的社會條件,有了錄音錄像技術的幫助,借助于隨身聽、電腦電視等,還是較容易就能創造一個英語語境的,不一定非得到說英語的國家去。
???
下面首先按聽、說、讀(詞匯)、寫四個方面談一談,然后介紹一下學習資料選曲方面的內容,讀者可以各取所需。
1
.
?
聽
???
聽是聽、說、讀、寫四項中最容易的一個了。沒什么捷徑,多聽!能一心一意的練習更好,但也不一定非得痛苦的固定在板凳上,這方面有一些比較輕松有趣的方式。聽英文歌就是一個很好的途徑。找些經典英文歌曲,什么
“
卡薩布蘭卡
”
,
“Wind flower”
之類的,旋律優美又耐聽。開始可以隨意的一遍遍的聽,聽得比較熟了,還可以把歌詞打出來,歌詞對照著,理解一下意思,慢慢的,你會發現掌握了很多常見的發音,而且印象深,這對口語也有幫助的。除了歌曲,還可以找一些情景英語的段子,走遍美國就不錯,口語說得很自然流暢(
toefl
聽力聽起來也挺舒服的),不像國產的那么呆板可恨。沒事就放一放,實在煩了,該干什么干什么(比如打掃衛生甚至看小說),放著它當背景音樂好了,潛移默化,一樣有效果的(能對照一下原文效果更好。)。小孩子學語言不就是這樣的嘛,它們也沒有非常專注刻意的學,聽多了,也就知道是怎么回事了。還可以找些趣味性強的英文片看看比如英文大片(帶字幕的)、或《六人行》之類的肥皂劇。娛樂的同時得到提高,何樂不為?總之,不管采用何種方式,但只要磨耳朵夠多,開始可能還體會不到,慢慢就有語感啦。對了,還有,選材的時候可以先選聽速度慢些的,不然不懂的比例太多,會容易有厭煩情緒。(比如開始可以聽
VoA English special(
美國之音廣播中的慢速英語
)
,到后來可以聽聽
VoA
(正常語速)、
BBC
(英國廣播)之類的。只是用收音機不太好收,還總有噪音,網上倒有一些鏈接,還能湊合)
2
.
說
???
練習口語,就不像聽力那泛泛也可以了。這個比較忌諱龐雜。否則只是變相的練了聽力而已。最好選一個經典些的教材(如
900
句之類的,走遍美國也不錯,
TSE
的選題也不錯),有針對性地、反復的練練習常用場景的慣用句式,如找人的,問路的等等這樣,直到把常用的句式掌握純熟。說得容易,做起來真需要克服一定的浮躁心理呢,我做得就很不好。常用句式掌握了,可再在此基礎上擴展,學一些特定情景的慣用對話,什么辦公室的、商務的等等。更高的層次就是俚語、諺語、流行用語了,個人認為這些是錦上添花的東西。
???
另外練習口語,一定要臉皮夠厚,敢說。越是敢說,越能說好,從而形成良性循環。不練的話,任你閱讀、聽力、單詞再好,再要出口表達時,你會發現自己連很簡單的意圖都難以組織。可惜大多數人都很難克服這個心理障礙,比如在英語角,張不開口,這樣從一開始就被口語拒之門外了。那又有沒有別的辦法呢?有
:)
。那就是找一兩個平時比較說得來的,又都迫切想要提高英語的。采用隨時隨地的方式,以隨意的態度來說,英漢夾雜也可。這樣次數多了,嘴巴就張開了,慢慢的也就有基礎了。
???
有人可能會問,怎么說了這么多,還沒提到詞匯呢?我的體會是這樣的:聽說和讀寫可以說是完全是兩個不同的方向,但是如果只是為了日常聽說使用,真的沒必要這么狠記單詞。記得有個統計,口語常用詞才
1000
多個。想一想,很多大字不識的人漢語不還是照樣說的很流利?一個大學教授未必就能說得一個賣菜的文盲。語言的學習都是一個道理。
???
曾聽過余敏宏一次講座。余提到的一件事,讓我印象非常深刻。他說有一次,發現他在美國的女兒,居然能將剛剛聽到的一個挺長的新單詞拼出來,從沒有人教過她這個詞的拼法!怎么回事呢?因為從小生活在英語環境中,英語說得很流利,語感很好,碰到一個單詞的時候,她根據這個單詞的讀音,自然而然的就能把對應的字母拼出來了。而中國早期的英語教育(至少
80
年代前生人接受的教育),正好逆天而行,上來就是單詞的拼法,語法。聽說反而被輕視,結果本末倒置,費力不討好,學出一批不實用的啞巴英語。今天再看小學生的英語教育,一上來就是聽說,不正體現了教育部門在意識到這個問題后,教育方法的改進嗎?可惜我們這一代,沒趕上這好時候。
3
.讀
??? “
讀寫
”
就不同了。單詞對應到中文就是漢字,而不識字如何
“
讀寫
”?
所以說到閱讀,就有必要提到與之息息相關的單詞了。
???
單詞學習可以說也是分階段的,一個階段有一個階段的詞匯量要求。比如若為四六級考試,大學英語課的詞匯量足夠了,甚至不用刻意背什么四六級詞匯,我大學最厭背單詞。只要抓好閱讀,當然為了考試,還要練習語法。但是,再往后,想要提高,你會發現很難突破了。就是你讀的再多,聽得再多,也很難有大的提高,你會發現你閱讀、聽力的層次徘徊不前,似乎一切努力都無用。
問題根源是什么呢?詞匯量!也就是說,這時靠閱讀方法等已不能克服單詞造成的障礙了。要達到一個更高的層次,詞匯量首先需要進階了。這是我考
G
的過程中意識到的。在強迫自己極了大量似乎一輩子都用不著的單詞后,發現自己閱讀和聽力速度和理解力都容易上去了。很多以前看見就頭疼的科普讀物也能讀一些了。也是,很多
G
詞匯是為讀大學教科書準備的呢。
Gre
詞匯還是有它道理的。
???
背單詞本身而言,基本上是體力活,選書的話,如果帶詞根詞綴分解更好(紅寶
2
版就是這樣的)。而一開始,詞根詞綴一類的知識還是起不了多大作用的。因為腦子里還沒有積累一定的詞匯量時,理論聯系不了實際,這些詞根詞綴的東東根本用不上。往往是單詞看得差不多了,自己開始有意識的總結時,在看有關詞根詞綴之類的知識,有種豁然開朗的感覺,這時再用就如魚得水了。就象大學計算機專業時學的數據結構,操作系統之類的知識,學是學了,很多跟實踐聯系不上。甚至有時候還認為那些課程沒什么用。等編程的實踐做得、見得夠多了,才意識到,哦,那些東西是這么有用的啊。
???
另外,如有特定的應用學科領域需求,還要有針對的補些專業詞匯才好,如計算機英語、商務英語等等。
???
模糊記得一篇單詞與閱讀的文章,結合人腦思維的特點,覺得挺不錯。大致意思是這樣的:單詞可以分為兩類,一類是非常直觀的,如
building,plant
等等人腦直接就能反映出是什么意思的,所以使用時,占用的人腦的
“
內存
”
較小
.
而另一類則是比較抽象的,如
philosophy, religion
等等,對這這種詞匯,人腦在進行理解與使用的時候,往往要對該詞的內涵外延做一些聯想和記憶,大腦里需要開辟一個較大空間。所以如果一篇文章多是第一類直觀的單詞,就能很快的理解,閱讀速度自然快。而若第二類出現的多的時候,就容易出現
“
轉不過彎來
”
的現象,理解程度和速度自然就下來了。所以若能對這些抽象的詞匯進行一下強化記憶,也是閱讀加速的有效方法之一。那篇文章還對所謂常出現的抽象的詞匯作了一個總結。
可惜這篇文章沒能即時保存,后來再查也找不到了
:(
。
???
下一步就是句型??破铡⑽膶W等方面的文章難懂,除了專業詞匯,主要難在長句上,有時一句話就是一個段落,定狀補從句可能比主句還長,里面可能還套著定狀補。常有這種情況:放眼看去,每個單詞都懂,但放在一起就不知所云了,主謂賓怎么也找不出來啦。出現這種狀態,那就說明只掌握基本的句型已經不夠用了。需要補充一些復雜句式。說得挺恐怖,其實,這些所謂的復雜句式還是很有限的。《楊鵬
100
句》就總結的很好,基本囊括了科普文章里常出現的復雜長句類型。把它熟練掌握了,句型這一關也就基本
Ok
了。
???
另外閱讀方法也很重要。這就跟中文文章類似,不同的體裁如說明文、議論文有著特定的展開模式。如議論文往往在每段的第一句或最后一句給出論點等等。網上這方面的東西就太多了,書也多,總結的又細又全,我就不贅述了。但是這些技巧性的東東,還是那句話,不從大量的實踐中領會,還是水中撈月而已。
???
補充一點,做練習的初期,若能多看一些趣味性強的或比較經典的的文章段落更好。個人認為這個選材的過程很多教育專家們已經為我們做了。其實很多四六級模擬題的閱讀選材達到了這一點,很多文章選段在內容、文彩方面很不錯。若能在閱讀的同時,若能同時注意領會在知識上的提高、獲得欣賞美文一樣的滿足,就會產生培養對閱讀的興趣,變枯燥為樂事。若能忘我的投入,才是學習的最高境界啊。
4
.寫
???
這是四項中要求最高的一項,最體現水準。就拿單詞和句式來說吧,對之掌握的程度比閱讀要求要高的多,也最容易出現眼高手低的現象。能夠閱讀內容、結構都較晦澀的文章,卻未必能寫好一篇最基本的三段式議論文。讀的時候覺得句子這么寫很順暢、很地道啊。自己下筆的時候,就不知道意思該怎么表達,句型該怎么組織啦,往往出現
“Chin-english”
(中式英語)的現象。怎么辦呢?再練練句型基本功吧。另外,跟中文作文是相通的。小學上語文課,老師經常建議背好詞好句。英文寫作一樣的。
“
學會唐詩三百首,不會做來也會偷
”
。這方面經典背誦書籍為《新概念英語》,在學校和單位遇到好多老師推薦它??上О?,雖然早就知道這部經典,迄今為止我才背了兩篇,現在還忘得差不多了。寫作也是有體裁之分,不同體裁有一些段落展開模式(如應付考試的議論文三段式),還有的體裁有一些特別的規定或模式如信函、簡歷等等。這個倒是相對比較好掌握的。
???
寫這個方面的經驗較少。我真是紙上談兵了,不說了。
下面談談有關學習資料選取,這方面我的體會有兩點:
1
.貴專不貴多
???
現在出英文輔導書的名人可真不少,徐國章、李陽、還有個什么劉毅??吹娜搜刍潄y。其實誰的都行,怎么說呢。跟定一個,扎扎實實的練習才是最實際的。除了極少數特別經典(如新概念,趣味性、科學性、詞句規范嚴謹等各方面都較過硬)的以外,別的都是
just so so,
選一套就行了,不必對某個專家特別捧場。所以我也就不特別推薦誰的書啦。要提的是,外語教學與研究出版社出版的外國語大學的書比較權威,學校大多選他們的書為教材,這點可以作為買書參考。
???
用書不貴多,而貴在專。公司一英語很棒的
“
海龜
”
介紹過,他最初練習口語素材僅僅是
900
句而已。有了爛熟的
900
句基礎,日常的口語基本就能應付了。資料貪多無用。有的網友資料下了一堆,甚至本身就是英文版塊的壇主,各種東東應有盡有。到頭來卻發現僅僅作了了儲藏收集的工作而已,程度卻不見長。
2
.循序漸進
???
其實就像我一個朋友說的,循序漸進的方法是最科學,長遠看來效率最高的方法。我原來這方面做得不好,近來意識到這一點,所以還是說說這方面的想法,能給大家以啟發或警示最好。
選材的時候要注意循序漸進。其實這個方面,學校教育提供的資料挺不錯的。特別是聽力方面。比如說吧,聽力多分初、中、高級(如外研社的教材),從簡單的句型、對話、小段落,到場景對話、短文,再到演講獨白等,各種類型的正式與非正式材料應有盡有。由淺入深、由慢到快。開始時,練聽力約等于練習聽單詞,單詞都聽出來了,意思也就知道了。再往后,要慢慢注意總結常用說法,比如有的可能不很合語法規范等;注意語音語調不同,所表達意思的不同等。
???
雖然泛聽能增強語感,但到了一定程度,會發現決平日里積累下來不少耳熟卻不很明確意思的地方。這是進階的關鍵時刻,須借助于精聽了。有時精聽時,容易出現精神渙散的現象,即使耳朵塞著耳機,放著很大聲的英語,思想卻不知跑到哪里去了,特別對于聽
“
熟
”
了的段子,更易出現這種情況。怎么辦呢?好在還有
“
聽寫
”
(聽力教材也常見這種題型)這招,能幫助克服這種障礙。
toefl
聽力也是不錯的精聽材料。走遍美國趣味性強,可作為輔助泛聽材料,當背景的那種。
???
單詞方面,可以這樣:四六級詞匯
-
〉托福詞匯
-
〉
Gre
詞匯。這樣一步一步來,有個緩沖,不至于太痛苦。
???
閱讀材料要多選練難度適中的,偶爾穿插嘗試一些難度高一點的。什么樣的是針對自己難度適中的呢?一篇閱讀文選拿在手中,隨意抽查幾篇文章。若是一篇文章幾乎沒遇到什么單詞,幾乎不假思索一遍就過,內容什么也能概括個八九不離十的,那說明選材太容易啦,沒有挑戰性,該換本深點的。若文章看下來,有一些生詞很正常,但是不查它,或稍查幾個也能順過去;總有個別句子需要重復看上兩三遍,但最后也能根據上下文把文章大意領略個差不多。那么這個難度就是適中的,比較適合當前階段的學習用。等練到這樣的文章也達到前面的那種程度了。那恭喜你,你已經有了可喜的進步,可以進階啦!
???
要注意的是,千萬不要上來就選些超出自己層次許多的,比如上來就啃原著,搞大躍進。也許有人說不是推薦看原著嗎?那是對閱讀
(
包括單詞
)
功底已足夠深的人說的。讀原著確實是更原滋原味,特別是名著,語言或文彩絢麗或意味深長,對提高欣賞水平和作文層次有好處。但對初學者來說,讀一句話化上十分鐘查單詞,根本無法領略這種好處。一步一步來,不斷的收獲小小的進步,其中的成就感對保持旺盛的斗志有好處。急功近利,無疑是在扼殺自己對閱讀的興趣和耐心。當然更難提長進。
???
順便提一句:有條件最好備個文曲星,很方便哦,還可利用之抓住點滴時間背單詞。我最沒耐心查字典,特別是做閱讀的時候查最不爽,本來一篇文章看了一半,查幾個單詞回來,看過的什么東東也忘得差不多了,特別是稍有難度的文章。文曲星查起來快多了。
???
另外,英語學習的持續性比較重要。特別是閱讀,隔一段時間不看,再拿起來就不得不從一個低些的層次在往上進步,仿佛語感上出了斷層。所以要盡量不間斷,不然
“
逆水行舟,不進則退
”
。
最后一點,現在種種吹噓的所謂學英語的捷徑不少,似乎還沒有哪個經得起檢驗呢。還是踏踏實實最明智。共勉吧!歡迎大家拍磚和切磋,尤其期待說、寫方面有心得的,把你們的珠玉
show
出來吧!
?
備注:此文于
2004-7-28
首發于太傻論壇
-
〉英語綜合學習討論版
posted @
2006-09-21 12:36 pengyi 閱讀(384) |
評論 (0) |
編輯 收藏