2

win2dキャンバスに異なるポイントと異なるサイズの2つの異なる画像を追加し、アプリケーションを実行して、表示するように設定された2つの画像の完璧なポイントを表示します。次に、画像を選択してキャンバス上で移動する方法。

4

1 に答える 1

3

Win2D は、イミディエイト モードのグラフィックス ライブラリです (ウィキペディアから)。

即時モード レンダリングは、グラフィック ライブラリのアプリケーション プログラミング インターフェイスのスタイルであり、クライアント呼び出しによってグラフィック オブジェクトがディスプレイに直接レンダリングされます。ダブルバッファリングの使用を妨げるものではありません。保持モードとは対照的に、レンダリングされるオブジェクトのリストは API ライブラリによって保存されません。代わりに、アプリケーションは、実際の変更に関係なく、新しいフレームが必要になるたびに、シーン全体を記述するために必要なすべての描画コマンドを再発行する必要があります。この方法は、アプリケーション プログラムに最大限の制御と柔軟性を提供します。

したがって、変更したいオブジェクトの参照を保持するのはあなた次第です。一度描画すると失われるからです。


したがってCanvasBitmap、グローバル リソースとして定義するか、何らかのタイプの ResourceLocator を作成します。次に、カスタム オブジェクトのような x、y、幅、高さを格納する独自のクラスを作成します。

public class GenericItem
{
    public CanvasBitmap b;
    public int x;
    public int y;
    public int w;
    public int h;
}

Win2D からの変更例:

CanvasBitmap cat, mouse;
GenericItem gi_cat;

ビットマップを次の場所にロードします。

async Task CreateResourcesAsync(CanvasControl sender)
{
    cat = await CanvasBitmap.LoadAsync(sender, "ShawnsCat.jpg");
    mouse = await CanvasBitmap.LoadAsync(sender, "Mouse.png");

    // create your GenericItem here
    gi_cat = new GenericItem();
    // fill in your x,y,width,height,bitmap
}

今描く

void myWidget_Draw(CanvasControl sender, CanvasDrawEventArgs args)
{
    args.DrawingSession.DrawImage(gi_cat.b, gi_cat.x, gi_cat.y);
}

これで、gi_cat.x gi_cat.y および追加したプロパティを変更できます。

gi_cat.x = 500;
gi_cat.y = 250;

また、キャンバス コントロールで Invalidate メソッドを呼び出して再描画を行うことができます。

name_of_your_canvas.Invalidate();

これにより、キャンバス コントロールが新しい位置で再描画されます。


基本的にすべて自分で処理する必要があります。DOM のようなアプローチを探している場合はCanvas、XAML で利用可能な通常のコントロールを使用してください。


私はかなり詳細なWin2Dウォークスルーをここに持っています:

Win2D 入門: Windows ユニバーサル アプリケーション

于 2016-05-20T01:31:37.767 に答える