在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

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

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

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

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

             ?。?)BorderStyle := bsNone; 

              WindowState := wsMaximized; 

             ?。?)BorderStyle := bsNone; 

              Left := 0; 

              Top := 0; 

              Width := Screen.Width; 

              Height := Screen.Height; 

              (3)BorderStyle:=bsNone; 

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

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

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

              begin 

              if key=27 then 

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

              end; 

              另外一定要把Form1的keypreview設(shè)置成為True;keypreview默認(rèn)為False。 

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

              (1)如果是要使用系統(tǒng)已定義的光標(biāo),可用:Image1.cursor:=已定義光標(biāo)名; 

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

              將制作好光標(biāo)調(diào)入 

               const 

               newcur = 1;(必須大于0) 

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

              image1.cursor:=newcur; 

              4.在查看較大時(shí),如果窗體比圖象小,就不能完全圖象。如果將較大的圖象壓縮來顯示到窗體上的話,圖象就會(huì)模糊不清。將圖象的一部分顯示到窗體上,需要時(shí)用鼠標(biāo)移動(dòng)圖象來瀏覽其他部分,這樣可以瀏覽全部圖象有可以達(dá)到清晰的效果。如果要使鼠標(biāo)移動(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í)現(xiàn)跟隨鼠標(biāo)軌跡在透明的Image組件上繪制不規(guī)則曲線(即在觸摸屏的背景圖片上做標(biāo)記),并且繪線的同時(shí)沒有閃爍現(xiàn)象,首先讓我們實(shí)現(xiàn)Image組件在畫線是保持透明,這里用image1.Canvas.Brush.Color來實(shí)現(xiàn);而根據(jù)鼠標(biāo)軌跡繪制不規(guī)則曲線,主要用到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所在的容器設(shè)置雙緩沖,防止畫線時(shí)閃爍。 

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

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

              end;



            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉