Я добавляю два разных изображения на холсте win2d в разных точках и разном размере и запускаю приложение, отображающее два изображения, которые идеально подходят для отображения. Затем, как я выбираю изображение и перемещаюсь по холсту.Как выбрать конкретное изображение, затем выбирает перемещение изображения на холсте win2d?
ответ
Win2D является немедленным режим графической библиотеки (из Википедии)
Немедленное рендеринг режим является стиль для интерфейсов прикладного программирования графических библиотек, в которых клиент непосредственно вызовы вызывают рендеринга графических объектов на экране. Это не исключает возможности использования двойной буферизации. В отличие от сохраненного режима списки объектов, которые будут отображаться, не сохраняются библиотекой API. Вместо этого приложение должно повторно выдавать все команды рисования, необходимые для описания всей сцены каждый раз, когда требуется новый кадр, независимо от фактических изменений. Этот метод обеспечивает максимальный уровень контроля и гибкости прикладной программы.
Таким образом, вам необходимо сохранить ссылку на любой объект, который хотите изменить, потому что как только он нарисован, он потерян.
Так определить свой CanvasBitmap
как глобальный ресурс или создать некоторый тип ResourceLocator. Затем создайте свой собственный класс, который хранит x, y, width, height kinda, как пользовательский объект;
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 Пошаговое здесь: