<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 學(xué)習方法與實(shí)踐 > 觸摸屏編程圖象處理的一些小技巧

觸摸屏編程圖象處理的一些小技巧

——
作者:xqi 時(shí)間:2007-12-20 來(lái)源:eNet硅谷動(dòng)力 收藏

[摘要] 大家是經(jīng)常用到的,但不一定知道的是通過(guò)鼠標的單擊和移動(dòng)是怎樣才能實(shí)現的種種功能。下面就讓我們來(lái)簡(jiǎn)單介紹在過(guò)程中圖形、技術(shù)的一些小技巧。

 
[關(guān)鍵字] 觸摸屏 Delphi 技巧 

 
  觸摸屏大家是經(jīng)常用到的,但不一定知道的是通過(guò)鼠標的單擊和移動(dòng)是怎樣才能實(shí)現觸摸屏的種種功能。下面就讓我們來(lái)簡(jiǎn)單介紹在觸摸屏過(guò)程中圖形、技術(shù)的一些小技巧。 

  1.怎樣使窗體全屏,即根據器的大小來(lái)確定窗體的大小,這里介紹三種方法來(lái)實(shí)現: 

 ?。?)BorderStyle := bsNone; 

  WindowState := wsMaximized; 

 ?。?)BorderStyle := bsNone; 

  Left := 0; 

  Top := 0; 

  Width := Screen.Width; 

  Height := Screen.Height; 

 ?。?)BorderStyle:=bsNone; 

  SetBounds(0,0,Screen.Width,Screen.Height); 

  2.實(shí)現按ESC鍵使全屏窗體退出全屏,則要根據ESC的鍵值27來(lái)實(shí)現,代碼如下: 

  procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState); 

  begin 

  if key=27 then 

  close;//關(guān)閉窗口; 

  end; 

  另外一定要把Form1的keypreview設置成為T(mén)rue;keypreview默認為False。 

  3.當鼠標移動(dòng)到某組件區域范圍內(如Image組件),如何改變鼠標的形狀呢?主要是設置相應組件的cursor屬性,具體方法如下: 

 ?。?)如果是要使用系統已定義的光標,可用:Image1.cursor:=已定義光標名; 

 ?。?)如果是使用自定義的光標,可用以下方法: 

  將制作好光標調入 

   const 

   newcur = 1;(必須大于0) 

  screen.cursors[newcur]:= loadicon()或Loadcursorfromfile(); //調入的圖標的擴展名必須為ani,ico,cur 

  image1.cursor:=newcur; 

  4.在查看較大時(shí),如果窗體比圖象小,就不能完全圖象。如果將較大的圖象壓縮來(lái)顯示到窗體上的話(huà),圖象就會(huì )模糊不清。將圖象的一部分顯示到窗體上,需要時(shí)用鼠標移動(dòng)圖象來(lái)瀏覽其他部分,這樣可以瀏覽全部圖象有可以達到清晰的效果。如果要使鼠標移動(dòng)圖象,需要用到三個(gè)事件,即:onMouseDown、onMouseUp、onMouseMove,具體代碼如下: 

  procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; 

   Shift: TShiftState; X, Y: Integer); 

  begin 

   moveFlag:=true; 

   OX:=X; 

   OY:=Y; 

  end; 

  procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, 

   Y: Integer); 

  begin 

  if moveFlag then 

   begin 

   image1.Left:=image1.Left+(X-OX); 

   image1.Top:=image1.Top+(Y-OY); 

   end; 

  end; 

  procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; 

   Shift: TShiftState; X, Y: Integer); 

  begin 

   moveFlag:=False; 

  end; 

  5.如何實(shí)現跟隨鼠標軌跡在透明的Image組件上繪制不規則曲線(xiàn)(即在觸摸屏的背景圖片上做標記),并且繪線(xiàn)的同時(shí)沒(méi)有閃爍現象,首先讓我們實(shí)現Image組件在畫(huà)線(xiàn)是保持透明,這里用image1.Canvas.Brush.Color來(lái)實(shí)現;而根據鼠標軌跡繪制不規則曲線(xiàn),主要用到TCanva的兩個(gè)重要方法:MoveTo、LineTo。具體代碼如下: 

  procedure TForm1.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode); 

  begin 

  with image1.Canvas do 

  begin 

   Pen.Mode := AMode; 

   pen.Color:=clred; 

   pen.Width:=10; 

   MoveTo(TopLeft.X, TopLeft.Y); 

   LineTo(BottomRight.X, BottomRight.Y); 

  end; 

  end; 

  procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, 

   Y: Integer); 

  begin 

  if Drawing then 

  begin 

  MovePt := Point(X, Y); 

   DrawShape(Origin, MovePt, pmcopy); 

  origin:=movept; 

  end; 

  end; 

  procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; 

   Shift: TShiftState; X, Y: Integer); 

  begin 

  Drawing := True; 

  image1.Canvas.MoveTo(X, Y); 

  Origin := Point(X, Y); 

  MovePt := Origin; 

  end; 

  procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; 

   Shift: TShiftState; X, Y: Integer); 

  begin 

  if Drawing then 

  DrawShape(Origin, Point(X, Y), pmCopy); 

  Drawing := False; 

  end; 

  procedure TForm1.FormCreate(Sender: TObject); 

  begin 

  panel1.DoubleBuffered:=true;//在Image1所在的容器設置雙緩沖,防止畫(huà)線(xiàn)時(shí)閃爍。 

  image1.Canvas.Brush.Color:=panel1.Color; 

  image1.Canvas.FillRect(rect(0,0,image1.Width,image1.Height));//實(shí)現繪線(xiàn)的同時(shí)保持Image1的透明性。 

  end;



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>