¡¡¡¡1¡¢CopyRect·½·¨£º´ÓÆäÔÐÍCopyRect(Dest:TRect;
Canvas:TCanvas;Source:TRect)¿É¿´³ö£¬Ëü½«Ô´»²¼Ä³Ò»¾ØÐÎÇøÓòµÄͼÏñ¸´ÖƵ½ÁíÒ»
¸ö»²¼µÄ¾ØÐÎÇøÓò¡£ÓÉÓÚÊÇÄÚ´æµÄ³É¿é¸´ÖÆ£¬Òò´Ë¾ßÓкܸߵÄÖ´ÐÐЧÂÊ¡£ÔÚTimer×é¼þµÄOnTimer
ʼþ³ÌÐòÖÐÁé»îʹÓøú¯Êý£¬¿ÉÒÔÉè¼Æ³ö¸÷ÖÖÃÀ¹ÛÑÝʾЧ¹û£ºÈç°ÙÒ¶´°¡¢ÍÆÀ¡¢ÂíÈü¿Ë¡¢Ëæ»ú
Ïß¡¢·´ÏñµÈµÈ¡£½«ÒÔÏ´úÂë¼ÓÈëµ½OnTimerʼþ³ÌÐò£¬¿ÉÑÝʾ¸÷ÖÖͼÏñЧ¹û£¬ÕâÀï½ö¾Ù³öÁ½ÖÖ
Ч¹û£¬¶ÁÕ߿ɲο¼ÓйØ×ÊÁÏÉè¼Æ¸ü¶à¸üƯÁÁµÄÑÝʾЧ¹û¡£
......
casePlayModeof
0:begin//´Ó×óÏòÓÒÒÆ¶¯(Éèx³õֵΪScreen.Width)
x:=x-10;
SCRSaverFrom.CopyRect(Rect
(x,0,x+10,Screen.Height),Bit.Canvas,
Rect(x,0,x+10,Screen.Height));
ifx=0thenChangePictureAndPlayMode;//¸Ä±äͼÏñ¼°ÑÝʾģʽ
end;
1:begin//ÂíÈü¿Ë
fori:=0toScreen.Width*Screen.Heightdiv10do
begin
j:=Random(Screen.Widthdiv4)*4;
k:=Random(Screen.Heightdiv4)*4;
SCRSaverFrom.CopyRect(Rect(j,k,j+4,k+4),Bit.Canvas,
Rect(j,k,j+4,k+4));
end;
SCRSaverFrom.CopyRect(Rect
(0,0,Screen.Width,Screen.Height),Bit.Canvas,
Rect(0,0,Screen.Width,Screen.Height));
ChangePictureAndPlayMode;//¸Ä±äͼÏñ Ýʾģʽ
end;
2:......
......
end;
¡¡¡¡2¡¢StretchDraw·½·¨£ºÒ»°ã˵À´£¬Ê¹ÓÃCopyRect·½
·¨ÒªÇóÔ´¾ØÐÎÓëÄ¿µÄ¾ØÐÎÓ¦ÏàµÈ£¬Èç¹ûÁ½Õ߳ߴçÏà²îÌ«´óʱ£¬É«²Ê¿ÉÄÜÊ§Õæ¡£Ê¹ÓÃStretchDraw
ÄܱÜÃâÕâ¸öÎÊÌ⣬ÆäÔÐÍΪ£ºStretchDraw(constRect:TRect;Graphic:TGraphic)¡£Ëü
¿ÉÔÚ»²¼Ö¸¶¨µÄ¾ØÐÎÇøÓòÄÚÍêÕûµØ¡°»¡±³öÒ»¸öͼÏñ£¬Èç¹ûԴͼÏóÇøÓòÓëÄ¿µÄÇøÓò³ß´ç²»Ò»
Ö£¬»á×Ô¶¯Stretch£¨ÀÉ죩£¬ÄÜÓÐЧµÄ±ÜÃâÉ«²ÊÊ§Õæ¡£µ«´Ëº¯ÊýÖ»ÄÜ¡°»¡±³öÕû¸öͼÏñ£¬Èç¹ûÖ»
Ðè¡°»¡±³öÒ»²¿·ÖͼÏñÔòÓ¦ÅäºÏCopyRect()ʹÓã¬ÏÈÓÃStretchDraw()ʹÕû·ùλͼ¡°±äÐΡ±Êä
³öµ½Ò»¸ö»²¼£¬È»ºóÔÙÓÃCopyRect()º¯Êý½«ËùÐ貿·Ö¡°»³ö¡±¡£
¡¡¡¡3¡¢TextOut·½·¨£ºÔÚÖ¸¶¨µÄλÖÃÊä³öÒ»´®ÎÄ×Ö¡£ÔÚCanvas
Öл¹ÓкܶຯÊý¿É»æÖÆÍ¼ÐΣ¬Ò²ÄÜÓÃÓÚSCRµÄÉè¼Æ£¬ÕâÀï¾Í²»¼Ó½éÉÜ¡£
¡¡¡¡4¡¢Ö§³ÖJPEGͼÏñ¡£ÓÉÓÚJPEGͼÏñ¸ñʽ¾ßÓкܺõÄ
ѹËõÐÔÄÜ£¬ÊÇ×î³£ÓõÄͼÏñ¸ñʽ֮һ¡£DELPHI3/4ÖÐмÓÈëÁ˶ÔJPEGͼÏñµÄÖ§³Ö£¬JpegImage
ÊÇTGraphicµÄÅÉÉúÀ࣬ËüµÄLoadFromFile·½·¨¿É´ÓJPEGÎļþÈ¡³öÒ»·ùͼÏñ£¬JpegImageû
ÓÐCanvasÊôÐÔ£¬²»ÄÜÓÃCopyRect()·½·¨,µ«ÆäËü»²¼¿ÉÓÃStretchDraw()·½·¨ÏÔʾ³öÒ»¸öJPEG
ͼÏñ£¬¾Í½«JPEGͼÏñת»»³Éλͼ¡£Çë¿´ÏÂÃæÀý×Ó£¬ÆäÖÐBitΪȫ¾ÖµÄTBitMap¶ÔÏó¡£×¢Ò⣺ʹÓÃJpegImage
Ó¦ÔÚUSESÖмÓÈëJPEGµ¥Ôª¡£
procedureLoadBMPFromJPEG(JPEGFileName:String);
//´ÓJPEGÎļþÖÐȡͼÏñ
varJpegImage1:TJpegImage;
begin
JpegImage1:=TJpegImage.Create;
JpegImage1.LoadFromFile(JPEGFileName);
Bit.Width:=JpegImage1.Width;
//ʹλͼÓëJPEGͼÏñ³ß´çÏàµÈ
Bit.Height:=JpegImage1.Height;
Bit.Canvas.StretchDraw(Rect
(0,0,Bit.Width,Bit.Height),JpegImage1);
JpegImage1.Free;
end;
¡¡¡¡¶þ¡¢MediaPlayerºÍTimer×é¼þ£º
¡¡¡¡MediaPlayer×é¼þ·â×°ÁËMCIÖоø´ó²¿·ÖµÄ¹¦ÄÜ£¬
ÀûÓÃËüºÜÈÝÒײ¥·ÅWAVEºÍMIDIÒôÀÖ£¬ÎªSCRÌí¼ÓÃÀÃîµÄ±³¾°ÒôÀÖ¡£ÓйشúÂëÈçÏ£º
ifMediaPlayer1.Mode$#@60;$#@62;mpPLayingthen
//ÒôÀÖ²¥·ÅÍêºó£¬¸ü»»ÒôÀÖ
begin
inc(i);
MediaPlayer1.FileName:=IntToStr(i)+.WAV;
//ÖðÒ»²¥·Å1.wav,2.wav...
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
¡¡¡¡Timer×é¼þÊÇÒ»¸ö¶¨Ê±Æ÷£¬ËüµÄIntervalÊôÐÔÖ¸
¶¨¶¨Ê±Æ÷µÄ¼ä¸ôʱ¼ä£¬Ã¿¸ôÖ¸¶¨µÄʱ¼ä¾Í»áÖ´ÐÐÒ»´ÎOnTimerʼþ£¬SCRµÄOnTimerʼþÄÚÒª
Íê³ÉÑÝʾͼÏñ£¬¸ü»»Í¼Ïñ£¬¼ì²éÒôÀÖÊÇ·ñ²¥·ÅÍê±Ï£¬¸ü»»ÒôÀֵȸ÷Ï×÷¡£Òò´Ë£¬TimerÊÇÉè
¼ÆSCR³ÌÐò±Ø²»¿ÉÉÙµÄ×é¼þ¡£
¡¡¡¡Èý¡¢ÉèÖÃSCRµÄ´°Ì壺
¡¡¡¡SCRµÄ´°ÌåÓëÒ»°ã³ÌÐòµÄ´°ÌåûÓÐÌ«´óµÄÇø±ð¡£
Éè¼ÆÊ±Ö»Ðè×¢Òâµ½ÒÔϼ¸µã£º
¡¡¡¡1¡¢ÉèÖô°ÌåÊôÐÔ£ºWindwoStateÊôÐÔÒ»°ãÉèΪwsMaximized£¬
ʹ´°Ì帲¸ÇÕû¸öÆÁÄ»£»BorderStyleÊôÐÔÉèΪbsNone£¬Ê¹´°ÌåÎޱ߿ò¡¢±êÌ⣻FormStyleÊôÐÔ
ÉèΪfsStayOnTop£¬Ê¹´°Ìå×ÜÊDZ£³ÖÔÚÆÁÄ»×îÉÏÃæ¡£
¡¡¡¡2¡¢·ÀÖ¹SCRÖØ¸´ÔËÐУºÎª·ÀÖ¹³ÌÐòÖØ¸´ÔËÐУ¬ÔÚWINS95/98
¿ÉÓÃAPIº¯ÊýFindWindow²éÕÒÒÑÔËÐеĴ°ÌåÀàÐÍ£¬APIº¯ÊýÔÐÍ£ºHWNDFindWindow(LPCTSTR
lpClassName,LPCTSTRlpWindowName)¡£ÒÔÏÂÑÝʾSCRÊÇÈçºÎ±ÜÃâÖØ¸´ÔËÐеġ£´ò¿ªProject£¬
ÔÚUSESµ¥ÔªÖмÓÈëWinTypesºÍSysUtilsµ¥Ôª¡£
programProject1;
uses
Forms,WinTypes,SysUtils,//ºóÁ½ÕßΪмÓÈëµ¥Ôª
Unit1inUnit1.pas{MyScreenSaverForm};
{$R*.RES}
varFindWindwsHandle:array[0..255]ofChar;//´æ·Å´°ÌåÃû
para1:String;
......
StrPCopy(FindWindwsHandle,TMyScreenSaverForm);
//TMyScreenSaverFormÊÇÕâ¸öSCRµÄ´°ÌåÃû¡£
ifFindWindow(FindWindwsHandle,Nil)=0//ѰÕÒͬһ´°¿ÚÀàÐÍ
then......//ûÓÐͬһ´°ÌåÖØ¸´ÔËÐÐ
else......//·¢ÏÖÓÐͬһ´°ÌåÖØ¸´ÔËÐÐ
......
¡¡¡¡×¢Ò⣺ÓÉÓÚDephiÔÚÉè¼Æ´°ÌåʱÒÑÏòWindowsµÇ¼Ç
ÁËTMyScreenSaverForm´°Ì壬ÈôÔÚDephiµ÷ÊÔÆ÷ÄÚÔËÐиóÌÐò£¬FindWindowº¯Êý»á·¢ÏÖÒÑÓÐ
Ò»¸ö´°Ì壬Ëü»áÖ´ÐÐelseºóÃæµÄ´úÂ룬µ÷ÊÔʱӦעÒâÕâÒ»µã¡£ÈçҪʹ¸Ã³ÌÐò˳ÀûÔËÐУ¬ÐëÏÈ
Ö´ÐÐFile²Ëµ¥ÖеÄCloseÃüÁ½«TMyScreenSaverForm´°Ì幨±Õµô¡£
¡¡¡¡3¡¢SCRµÄÊó±ê£º
- ÏÔʾ/Òþ²ØÊó±ê£ºSCRÓÐʱÔËÐÐÖÐÓ¦ÄÜÒþ²ØÊó±ê£¬¿ÉÓÃAPIº¯ÊýShowCursor£¬¸Ãº¯Êý£ºint
ShowCursor(BOOLbShow)¡£bShowÊÇÒ»¸ö²¼¶ûÀàÐͱäÁ¿£¬È¡FalseÖµÒþ²ØÊó±ê£¬È¡TrueÖµ
ÏÔʾÊó±ê¡£
- È¡Êó±êλÖãºÈ¡Êó±êËù´¦Î»ÖÿÉÓÃGetCurSorPos¹ý³Ì£¬ÔÐÍΪ£ºGetCurSorPos(MousePos£ºTPoint)£¬MousePos
ΪÊó±êËù´¦Î»Öá£SCRÒ»µ©ÔÚ²¶»ñÊó±êÒÆ¶¯ÏûÏ¢£¬¾Í½«µ±Ç°Êó±êµÄλÖÃÓëÒѱ£´æµÄλÖñÈ
½Ï£¬¼ÆËã³öÊó±êÒÆ¶¯µÄ¾àÀë¡£
¡¡¡¡ËÄ¡¢²¶»ñÊó±êÓë¼üÅÌÏûÏ¢£º
¡¡¡¡SCRÔËÐк󣬰´Ï¡¢Òƶ¯Êó±ê»òÇû÷¼üÅ̶¼Ó¦Á¢¼´
×÷³ö·´Ó¦£¬ÖжϳÌÐòÔËÐС£ÕâÓÐÁ½ÖÖ°ì·¨¿É½â¾ö¡£Ò»ÊÇÔÚ´°ÌåËùÓÐÓëÊó±ê¡¢¼üÅÌÓйصÄʼþ
ÄÚ¼ÓÈëClose¹ý³Ì£¬ÈçOnMouseMove¡¢ONKeyDownµÈʼþ¡£ÕâÑùÒ»µ©Óû§Òƶ¯Êó±ê»ò°´ÏÂÊó±ê£¨
¼üÅÌ£©¶¼»á¹Ø±Õ³ÌÐò¡£ÕâÖÖ·½·¨¼òµ¥Ò×ÐУ¬µ«ÓÐÒ»¸öȱÏÝ£¬°´Êó±êÖС¢ÓÒ¼üÈ´²»ÄܹرճÌÐò¡£
¶þÊÇʹÓÃApplication¶ÔÏóµÄOnMessageʼþ£¬ÎÒÃÇ¿ÉΪ¸Ãʼþ¶¨ÒåÒ»¸ö´¦Àí³ÌÐò£¬ÒÔ²¶»ñ
´«µÝµÄÏûÏ¢£¬²¶»ñÏûÏ¢ºóÅж¨ÏûÏ¢ÊÇ·ñΪÊó±ê»ò¼üÅÌÏûÏ¢£¬Èç¹ûÊÇ£¬¾Í¾ö¶¨ÊÇ·ñ¹Ø±Õ³ÌÐò¡£
¼Ù¶¨CloseSCRÊÇÓû§±àд²¶»ñÏûÏ¢³ÌÐò£¬ÒªÏÈÉ趨Application.OnMessage:=CloseSCR¡£
²¶»ñÊó±ê¡¢¼üÅ̾͹رÕSCRµÄ³ÌÐòÈçÏ£º
procedureTMyScreenSaverForm.CloseSCR
(varMsg:TMsg;varHandled:boolean);
varx,y:Integer;
begin
caseMsg.messageof
WM_MOUSEMOVE:begin
//ÒÔÏÂΪÊó±êÏûÏ¢£¬MousePosΪÒѱ£´æÊó±êλÖÃ
x:=Abs(loWord(Msg.lParam)-MousePos.x);
y:=Abs(HiWord(Msg.lParam)-MousePos.y);
if(x$#@62;10)or(y$#@62;10)thenClose;
end;
WM_LBUTTONDOWN:Close;
WM_MBUTTONDOWN:Close;//°´ÏÂÊó±êÖмü
WM_RBUTTONDOWN:Close;//°´ÏÂÊó±êÓÒ¼ü
WM_KEYDOWN:Close;//ÒÔÏÂΪ¼üÅÌÏûÏ¢
WM_KEYUP:Close;
WM_SYSKEYDOWN:Close;
WM_SYSKEYUP:Close;
end;
end;
¡¡¡¡Îå¡¢ÔËÐÐSCRʱµÄ²ÎÊý£º
¡¡¡¡×îºóÒ»¸öÎÊÌâÊÇ£ºWINDOWSÊÇÈçºÎÔËÐÐSCR³ÌÐòµÄ
£¿SCRÓÐÈýÖÖÔËÐз½Ê½£º1¡¢ÆÁ±£2¡¢ÉèÖÃ3¡¢Ô¤ÀÀ¡£ÆÁ±£·½Ê½ÊÇSCR×îÖ÷ÒªµÄÔËÐз½Ê½£¬´¦ÓÚÆÁ±£
·½Ê½Ê±£¬SCRʵÏÖÆÁÄ»±£»¤µÄ¹¦ÄÜ£¬ÏÔʾ³ö¸÷ÖÖͼÏñ£»´¦ÔÚÉèÖ÷½Ê½Ê±£¬SCR¿ÉÈÃÓû§ÉèÖÃÓÐ
¹ØÐÅÏ¢£¬Èç¸ü»»Í¼Æ¬¡¢ÉùÒôµÈ£»ÔÚ¡°ÏÔʾÆ÷ÊôÐÔ¡±µÄ¡°ÆÁÄ»±£»¤³ÌÐò¡±Ò³ÃæÖмäÓÐÒ»¸ö¼ÆËã»úͼ
Ïñ¡£ÓÐЩSCR³ÌÐòÔËÐÐÓÚÔ¤ÀÀ·½Ê½Ê±£¬ÆÁÄ»±£»¤Í¼Ïñ²»ÊÇÔÚÕû¸öÆÁÄ»ÉÏÏÔʾ£¬¶øÊÇÏÔʾÔÚÕâ
¸ö¼ÆËã»úͼÏñµÄ¡°ÏÔʾÆ÷¡±ÄÚ¡£
¡¡¡¡WINDOWSÆô¶¯ÔËÐÐSCRµÄÃØÃÜÔÚÄÄÀËü¾ÍÔÚÓÚ
²ÎÊý¡£WINDOWS¿ÉÈÃSCR´øÈýÖÖ²»Í¬µÄ²ÎÊýÔËÐУº/S¡¢/C¡¢/P¡£ÆäÖÐ/S²ÎÊý֪ͨSCRÔËÐÐÓÚÆÁÄ»
±£»¤×´Ì¬;/C£¨ÔÚWIN98ÔòÒÔ/C:XXXX²ÎÊý£©ºÍ/P²ÎÊý·Ö±ðÔËÐÐÓÚÉèÖÃÓëÔ¤ÀÀ·½Ê½¡£´ò¿ª¡°ÏÔʾ
Æ÷ÊôÐÔ¡±£¬Ñ¡ÖС°ÆÁÄ»±£»¤³ÌÐò¡±Ò³Ãæºó£¬Ö»ÒªÒÑÑ¡ÖÐÒ»¸öSCR£¬Windows95¶¼»á²»¶ÏÒÔSCRFileName
/PXXXXXÆô¶¯¸ÃÆÁ±£³ÌÐò£¬XXXXX¾ÍÊÇÒ³ÃæÉϼÆËã»ú¡°ÏÔʾÆ÷¡±´°ÌåµÄ¾ä±ú£¨´¦ÔÚ/P²ÎÊýµÄ
ÔËÐУ¬¿ÉÓÉÕâ¸ö´°Ìå¾ä±úÈ¡µÃDC£¬ÕâÀï¾Í²»ÔÙÐðÊöÁË£©¡£Èç¹ûÑ¡ÖÐ[ÉèÖÃ(T)...]»ò[Ô¤ÀÀ(V)]
°´Å¥£¬Windows»áÏÈÖжÏÒÑÔËÐеÄSCR£¨Èç¹ûÓÐÒÔ/P²ÎÊýÔËÐеÄSCRµÄ»°£©£¬ÔÙÒÔ/C»ò/P²ÎÊý£¬
Æô¶¯Ñ¡ÖеÄSCR¡£Èç¹ûÑ¡ÖÐÁËÒ»¸öSCR£¬°´ÓÒ¼ü£¬³öÏÖ¿ì½Ý²Ëµ¥£¬ÆäÖÐÓС°²âÊÔ(E)¡±¡¢¡°ÅäÖÃ(O)¡±¡¢¡°
°²×°(I)¡±µÈÏËüÃÇ·Ö±ðÒÔ/C²ÎÊý¡¢ÎÞ²ÎÊý¡¢/P²ÎÊýÔËÐÐSCR¡£Ðè×¢ÒâµÄÊÇ£¬ÕâÀïµÄ¡°ÅäÖá±¾Í
ÊÇ¡°ÉèÖá±£¬Ææ¹ÖµÄÊÇ£¬È´Ã»ÓÐÈκβÎÊý¡£
¡¡¡¡ÔÚDELPHIÖУ¬ParamCountº¯Êý¿ÉÈ¡µÃÃüÁîÐвÎÊý
¸öÊý£¬ParamStr(Index:Integer)Ôò·µ»ØÃüÁîÐÐÖÐÏàÓ¦²ÎÊý×Ö·û´®£¬ÆäÖÐParamStr(0)Ϊ³Ì
ÐòÃû£¬ParamStr(1)ÖеĴæ·ÅÓÐWINDOWSÆô¶¯SCRµÄµÚÒ»¸ö²ÎÊý¡£Á˽âÕâЩ¿ÉÒÔ°ïÖúÎÒÃǸù¾Ý
²»Í¬µÄ²ÎÊýÉèÖÃÔËÐÐʱµÄÖ÷´°Ìå¡£¼Ù¶¨Ä³SCRÓжþ¸ö´°Ì壬ÓëÔ¤ÀÀ¡¢ÉèÖöþÖÖÔËÐз½Ê½Ïà¶Ô
Ó¦£¬Æä´°ÌåÃû·Ö±ðΪFormA,FormB,Ôò±àдProject³ÌÐòÈçÏÂ:
if(Paramcount$#@62;0)then
begin
para1:=Copy(UpperCase(ParamStr(1)),1,2);
ifpara1=/Sthen//Ô¤ÀÀ
begin
Application.Initialize;
Application.CreateForm(TFormA,FormA);
Application.CreateForm(TFormB,FormB);
Application.Run;
end;
ifpara1=/Cthen//ÉèÖÃ
begin
Application.Initialize;
Application.CreateForm(TFormB,FormB);
Application.CreateForm(TFormA,FormA);
Application.Run;
end;
endelsebegin//ÉèÖÃ
Application.Initialize;
Application.CreateForm(TFormB,FormB);
Application.CreateForm(TFormA,FormA);
Application.Run;
end;
¡¡¡¡Áù¡¢Ê¾Àý£ºÒ»¸öËæ»ú²¥·ÅÒôÀÖ¡¢ÑÝʾͼÏñµÄSCR¡£
¡¡¡¡Õâ¸öSCRÄÜÔÊÐíÓû§ËæÒâÉèÖò¥·ÅµÄÒôÀÖ£¨WAVEºÍMIDI£©
ºÍÑÝʾµÄͼÏñ£¨BMPºÍJPEG£©£¬ÓÉÓÚÆª·ùÓÐÏÞ£¬Ö»Éè¼ÆÁ˼¸ÖÖ¼òµ¥µÄÑÝʾЧ¹û¡£
¡¡¡¡²½ÖèÈçÏ£º
¡¡¡¡1¡¢´´½¨Ò»¸ö¹¤³ÌÏîÄ¿£¬½«´°ÌåÈ¡ÃûΪ£ºMyScreenSaverForm¡£
¡¡¡¡2¡¢¼ÓÈëTimer¡¢TOpenDialog¡¢TMediaPlayerµÈ×é
¼þ£ºÈçÏÂͼ(scr.jpg)
¡¡¡¡3¡¢´´½¨ÓйØÊ¼þ£¬¼ÓÈë³ÌÐò´úÂë¡£
¡¡¡¡4¡¢ÔÚDELPHIÖбàÒë³É¿ÉÖ´ÐÐÎļþ¡£
¡¡¡¡5¡¢½«¿ÉÖ´ÐÐÎļþÃû¸ÄΪXXXXX.SCR,¸´ÖƵ½WINDOWS
Ŀ¼
¡¡¡¡6¡¢´ò¿ªÏÔʾÆ÷ÊôÐÔ£¬´ò¿ªÆÁÄ»±£»¤³ÌÐòÒ³Ãæ£¬Äã
»á·¢ÏÖXXXXXÒѼÓÈëµ½ÆÁÄ»±£»¤³ÌÐòÁбí¿òÖУ¬¼´¿ÉÉèΪ»î¶¯µÄµÄÆÁÄ»±£»¤³ÌÐò¡£