C#中GDI+功能擴充:地區映像選擇功能

來源:互聯網
上載者:User

      本文程式下載/Files/xqzhao/DrawDragRect.rar(執行個體是用C#寫的一個基於Form對程式,它顯示一個檔案開啟對話方塊,開啟一個影像檔。當使用者選擇一個影像檔之後,他可以選擇映像的一個小地區,這個小地區就會被發送到另外一個form上單獨顯示。)

程式說明     
      在大部分的影像處理應用程式(如Adobe's Photoshop, Google's Picasa or Coral's Paint Shop Pro)中,它們都需要能夠選擇圖片的一個部分。或許使用者希望放大映像的這個地區,或者是將要對這塊被選取進一步處理。
      無論是那個應用,大部分的影像處理軟體都需要支援這個功能。當我們在MFC架構下面編寫程式的時候,它們通過CDC類的DrawDragRect (…). DrawDragRect (…) API來實現。
      儘管,幾乎所有的MFC的API都對應於Win32的API,然而,微軟盡然沒有提供一個對應於MFC中DrawDragRect (…) API的Win32 API。於是,在.net架構下面,就產生了這個問題,因為,我們找不到一個這樣的API。
       因此,當我們用C#編寫一個影像處理軟體的時候,這個問題變得非常突出,沒有一個DrawDragRect (…) 類似的API來完成映像選擇功能。而且,找不到一個能通過pInvoke調用的WIN32的api。這篇文章用C#語言實現了DrawDragRect (…) API,你可以很容易地在你的程式中調用它。

實現細節
      整個代碼嵌在CDrawDragRect.cs 檔案中,實現於CDrawDragRect類裡。如果你的程式需要使用這樣的功能,只需要把你的程式從以前的Form整合,改到CDrawDragRect的整合關係就可以了。
public partial class MainForm : CDrawDragRect
//Form
{
    ...
    //other implementation details skipped for brevity
}
      另外,你還需要做一件事情:在CDrawDragRect類裡void DrawDragRect(MouseEventArgs e)函數是處理這個功能的,它在滑鼠事件OnMouseMove(MouseEventArgs e)發生時,響應其動作。
DrawDragRect(MouseEventArgs e)函數,首先建立4個Windows地區:
rgnOld
rgnNew
rgnDiff
rgnDiffOld
rgnDiff記錄了rgnOld 和rgnNew的差值……

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.