Win2D 官方文章系列翻譯 - 幕後繪製

來源:互聯網
上載者:User

標籤:

本文為個人部落格備份文章,原文地址:

http://validvoid.net/win2d-offscreen-drawing/

 

應用有時需要將圖形繪製到並不立即顯示的目標上。此類繪製動作被稱作“幕後繪製”或“繪製到紋理”。當應用需要將繪製操作輸出儲存到一個檔案、返回為一個像素數組或留作後續操作的輸入源時,常需要進行這種幕後繪製。

通過使用 Win2D 中的 CanvasRenderTarget 可以輕鬆實現以上情境。

CanvasRenderTarget 派生自 CanvasBitmap ,包含一個名為 CreateDrawingSession()的方法。是用 CreateDrawingSession 方法可以把圖形內容繪製到一個 CanvasRenderTarget。例如:

CanvasDevice device = CanvasDevice.GetSharedDevice();CanvasRenderTarget offscreen = new CanvasRenderTarget(device, width, height, 96);using (CanvasDrawingSession ds = offscreen.CreateDrawingSession()){    ds.Clear(Colors.Black);    ds.DrawRectangle(100, 200, 5, 6, Colors.Red);}

 

注意上述樣本中調用了一個 Clear 方法。不調用此方法,位元影像則會以未定義內容進行初始化。通過 CanvasRenderTarget 建立的繪圖會話 (drawing sessions) 與 Win2D 提供的 XAML 控制項建立的繪圖會話對 Clear (清除)行為的處理是不同的。這種差異使得應用可以對(多個) CanvasRenderTarget 進行增量修改,而不必每次都重繪整個情境。

要把一個 CanvasRenderTarget 繪製到另一個繪製會話上,只需調用DrawImage(ICanvasImage) 方法或其任意一個重載即可。例如:

void canvasControl_Draw(CanvasControl sender, CanvasDrawEventArgs args){    args.DrawingSession.DrawImage(offscreen, 23, 34);}

 

CanvasRenderTarget 繼承了 IGraphicsEffectSource 介面,因此還可以把一個 CanvasRenderTarget 作為輸入源,傳入到一個特效 (Effect)進行使用。例如:

GaussianBlurEffect blurEffect = new GaussianBlurEffect(){    Source = offscreen,    BlurAmount = 3.0f};

 

應用能夠在一個 CanvasRenderTarget 上多次反覆關閉、重開(多個)繪製會話。

在繪製會話對象被釋放之前,繪製操作都不會應用到 CanvasRenderTarget。在 C# 裡,使用 using 語句塊就能妥善處理這一問題。

另外值得一提的是 CanvasRenderTarget 並不是一個 XAML 控制項,它與 XAML 元素樹完全無關。因此它適用於任何 XAML 或非 XAML 應用。

Win2D 官方文章系列翻譯 - 幕後繪製

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.