2016-05-17 2 views
0

私はwin2dで "hello world"タイプのテストをしています。UWP CanvasRenderTarget破損イメージを与える

Dim dev As CanvasDevice = sender.Device 
    Dim crt As New CanvasRenderTarget(dev, CSng(sender.ActualWidth), CSng(sender.ActualHeight), sender.Dpi) 
    Dim ds As CanvasDrawingSession = crt.CreateDrawingSession 
    ds.FillCircle(100, 100, 50, Windows.UI.Colors.Red) 

    args.DrawingSession.DrawImage(crt) 

このソート:

args.DrawingSession.FillCircle(100, 100, 50, Windows.UI.Colors.Red) 

しかし、私は「オフスクリーン」を描きたいので、私はこれを試してみました:私のキャンバスドローイベントで が、これは私が期待するように私に素敵な丸い円を与えます私はページをリサイズするようにページのサイズを変更すると、奇妙な破損した画像のすべての種類を見て、裂けるように見えます。 多くのありがとうございます。

+0

実際、ハードウェアレンダリングを行うにはDrawImageの前にds.flushを実行する必要があります – Ianb

答えて

0

OK]をクリックして、あなただけが関与まれにCanvasDrawingSession.Flushを呼び出す必要があり、実際にそれを行うには、ハードウェアレンダラを取得するためにdrawImageメソッドの前に開始し、ds.flushでds.clearを行う必要があり

1

、それを考え出しました異なるグラフィックスAPI間の相互作用。これはあなたがここで何をしているのか分かりませんが、必要以上に高価です。

問題は、図面セッションを廃棄していないことです。描画を終了したら、CreateDrawingSessionからの戻り値を破棄する必要があります。明示的にDisposeを呼び出すことは同じ効果を持ちますが、通常は "using"ステートメントを介して行われるC#では。私はVBを "使用する"と同等のものをアドバイスするのに十分なほどVBを知りません。