在 WinRT 中,如何加载图像,然后仅在写入图像之前等待加载所需的时间?

2023-12-04

我在 WinRT 项目中使用 WriteableBitmapEx。我将图像从用户图片库加载到 WriteableBitmap 中。但是,我无法立即写入该图像,如果我这样做,它将被图像本身覆盖(看起来是异步加载图像,然后它覆盖了我在其上的绘图)。我不知道如何阻止它这样做(我尝试在 SetSource 上使用 Await,但这不是异步方法)。

我使用了“Await Task.Delay(1000)”并且可以工作,但它看起来很麻烦,因为 1000 毫秒可能足够也可能不够。我希望它等到位图加载后再继续。

任何人都可以看出我做错了什么,或者建议我如何确保在进行任何处理之前从图片库加载 WriteableBitmap ?这是我创建的示例代码片段:

Dim file = Await picker.PickSingleFileAsync

If file Is Nothing Then
    Exit Sub
End If

Dim wbm As New WriteableBitmap(1, 1)
wbm.SetSource(Await file.OpenAsync(Windows.Storage.FileAccessMode.Read))

' If I don't have this, the DrawLine will not show up, if I do, it will.
Await Task.Delay(1000)

wbm.DrawLine(1, 1, 255, 255, Colors.Green)
wbm.Invalidate()

ImageMain.Source = wbm

此方法从应用程序的内容加载图像,对其进行解码并传回现成的 WriteableBitmap。 取自WriteableBitmapEx 库:

/// <summary>
/// Loads an image from the applications content and fills this WriteableBitmap with it.
/// </summary>
/// <param name="bmp">The WriteableBitmap.</param>
/// <param name="uri">The URI to the content file.</param>
/// <returns>The WriteableBitmap that was passed as parameter.</returns>
public static async Task<WriteableBitmap> FromContent(this WriteableBitmap bmp, Uri uri)
{
   // Decode pixel data
   var file = await StorageFile.GetFileFromApplicationUriAsync(uri);
   var decoder = await BitmapDecoder.CreateAsync(await file.OpenAsync(FileAccessMode.Read));
   var transform = new global::Windows.Graphics.Imaging.BitmapTransform();
   var pixelData = await decoder.GetPixelDataAsync(decoder.BitmapPixelFormat, decoder.BitmapAlphaMode, transform, ExifOrientationMode.RespectExifOrientation, ColorManagementMode.ColorManageToSRgb);
   var pixels = pixelData.DetachPixelData();

   // Copy to WriteableBitmap
   bmp = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight);
   using (var bmpStream = bmp.PixelBuffer.AsStream())
   {
      bmpStream.Seek(0, SeekOrigin.Begin);
      bmpStream.Write(pixels, 0, (int)bmpStream.Length);
      return bmp;
   }
}

顺便说一句,WriteableBitmapEx 现已正式支持 WinRT。 ;)http://kodieer.blogspot.de/2012/05/one-bitmap-to-rule-them-all.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WinRT 中,如何加载图像,然后仅在写入图像之前等待加载所需的时间? 的相关文章

  • 带预览和进度栏的 Twitter Bootstrap 图像上传

    我如何使用 Twitter Bootstrap 上传带有预览和进度条的单个图像 目前 在保存图像之前 我看不到上传图像的任何预览或进度条 Jasny 的 Bootstrap 分支让您能够接近这一点 看文档 http jasny github
  • 使用空的weak_ptr作为参数调用map::count安全吗?

    打电话安全吗map count http www cplusplus com reference map map count on an 未初始化因此为空weak ptr http en cppreference com w cpp mem
  • 如何在 Scala Play 框架中进行 Twitter 反向身份验证?

    我正在编写一个 play 应用程序 在 scala 中 并且正在尝试执行 twitter 此处概述的反向身份验证步骤 https dev twitter com docs ios using reverse auth https dev t
  • 使用 DataMapper 而不是 ActiveRecord [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 这种说法是否恰当。 if (0 != 表达式或变量) {} 在java中? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 扩展Android应用程序类

    当我正在寻找从远程设备获取错误报告的解决方案时 就像 iOS 中的试飞应用程序一样 我发现了acra适用于 Android 设备here http code google com p acra wiki BasicSetup 在基本设置中
  • Turbolinks 访问的页面中缺少 hubspot 聊天界面,但可用于全页面刷新

    我想将 hubspot 聊天界面集成到我的 Rails 4 Turbolinks 应用程序中 我已将 Google 跟踪代码管理器配置为在每个页面加载事件中显示支持聊天界面 该界面工作正常 GTM 标签 自定义 html PROBLEM 当
  • 如何从 python 中的字符串中删除 ANSI 转义序列

    这是包含我的字符串的片段 ls r n x1b 00m x1b 01 31mexamplefile zip x1b 00m r n x1b 01 31m 该字符串是从我执行的 SSH 命令返回的 我无法使用当前状态下的字符串 因为它包含 A
  • 具有重复值的 Sqlite 列

    就说专栏吧aSQLite 数据库的非常重复 始终有相同的 4 个值 其他值可能稍后出现 但不同值的数量将少于 1000 个 VALUES hello world it s a shame to store this str many tim
  • Haskell:如何创建将函数应用于元组项的最通用函数

    这是一个个人练习 旨在更好地理解 Haskell 类型系统的局限性 我想创建最通用的函数 将某些函数应用于 2 条目元组中的每个条目 例如 applyToTuple fn a b fn a fn b 我试图让这个函数在以下每种情况下都起作用
  • IIS 中的 WIX 和证书

    我正在尝试设置我的安装 以便使用 WIX 配置我的站点及其证书 我可以在 IIS 中查看证书并有权访问 cer 文件 这就是我对证书的了解 所以请简化任何答案 即我不知道我的 BinaryKey 是什么 该证书已安装在计算机上 理想情况下
  • 如何从我的 appDelegate 访问我的 viewController? iOS系统

    我有一个在 xCode 中创建为 基于视图的应用程序 的 iOS 应用程序 我只有一个 viewController 但它会自动显示 而且我没有看到任何将它与我的 appDelegate 关联的代码 我需要将数据从 appDelegate
  • Pandas 2 个字段中唯一值的数量

    我正在尝试查找覆盖 2 个字段的唯一值的数量 例如 一个典型的例子是姓氏和名字 我有一个数据框 当我执行以下操作时 我只获取每列的唯一字段数 在本例中为 最后一个 和 第一个 不是复合体 df Last Name First Name nu
  • 如何从Python枚举类中获取所有值?

    我正在使用 Enum4 库创建一个枚举类 如下所示 class Color Enum RED 1 BLUE 2 我要打印 1 2 作为某处的列表 我怎样才能实现这个目标 您可以执行以下操作 e value for e in Color
  • 如何使用 Microsoft Graph API 更新 MailboxSettings

    我想从不同的日历更新邮箱设置 如何构建可以通过 Microsoft Graph 更新 MailboxSetting 的请求 这是我的代码示例 但有例外 代码示例 User obj GraphServiceClient Users roomC
  • AngularJS 中的全局模拟对象用于 jasmine/karma 测试

    我有一个正在模拟进行单元测试的对象 基本上在我的测试文件中 我将其模拟如下 var mockObject mockMethod1 function return true mockMethod2 function return true b
  • 如何在 Firefox 插件上使用 jQuery 1.5.2+?

    首先 我创建了一个接收参数并返回 jQuery 的函数 例如 function getjQuery window jquery code window return window jQuery 但后来我收到了一封评论电子邮件 他们告诉我必须
  • 在着色器中旋转法线

    我有一个场景 其中有多个具有各自位置和旋转的模型 给定法线 着色器对每个像素应用简单的双向照明 那是我的顶点着色器 version 150 in vec3 position in vec3 normal in vec2 texcoord o
  • 在reactjs中停止超时?

    有没有办法可以杀死 摆脱 reactjs 中的超时 setTimeout function do something bind this 3000 通过某种点击或操作 我希望能够完全停止并结束超时 有没有办法做到这一点 谢谢 假设这种情况发
  • 使用 python/scipy 进行 voronoi 和 lloyd 松弛

    如何使用 Qhull 确定哪些 voronoi 单元 按索引 是 正确的 由 现有顶点 组成 我正在尝试使用 LLoyds 算法和 scipy spatial Voronoi 它是 Qhull 的包装器 生成的输入来执行约束松弛 就代码而言

随机推荐

  • 如何读取 FastCGI 请求的所有输出?

    我正在尝试使用 Rust 向 PHP 文件发出请求FastCGI协议 感谢以下答案 我得到了这段代码我之前的问题 use std os unix net UnixStream use std io Read Write use std st
  • 将 DIV 缩小到换行到其最大宽度的文本?

    将 div 收缩包装到某些文本非常简单 但是 如果文本由于最大宽度 例如 而换行到第二行 或更多行 则 DIV 的大小不会缩小到新换行的文本 它仍然扩展到断点 在本例中为最大宽度值 导致 DIV 右侧有相当多的边距 当想要将此 DIV 居中
  • Swift iOS 9 NSURLErrorDomain 错误 -1004

    我在 iOS 9 和 iOS 8 上使用 Swift 2 和 Alamofire 在 iOS 8 中 我对 API 的所有请求都工作正常 在 iOS 9 中 它们立即失败 并显示 1004 NSURLErrorDomain 并显示消息 无法
  • C#、Html 敏捷性、选择 div 标签内的每个段落

    例如 如何选择 div 标签中的每个段落 div p Hi p p Help Me Please p p Thankyou p 我已经下载了 Html Agility 并在我的程序中引用 我所需要的只是段落 可能有不同数量的段落 并且有大量
  • 将 jsonb 列值转换为 PostgreSQL 中的多列

    假设我在 PostgreSQL 中有一个表 其中包含以下列 CREATE TABLE sample id int jsonb jsonb date date 我插入了这两行 INSERT INTO sample id jsonb date
  • 如何使用 json.net 忽略类中的属性(如果为 null)

    我在用Json NET将类序列化为 JSON 我有这样的课程 class Test1 JsonProperty id public string ID get set JsonProperty label public string Lab
  • 根据另一列中的行更新列行

    我在 R 中有一个数据集 如下所示 我正在尝试更新 描述 列中的空单元格 以获取 值 列中的 0 值 Criteria Value Description Success 0 Success 21 look up Success 20 re
  • Android 检查 LocationManager 的权限

    我试图在单击活动布局中的按钮时显示 GPS 坐标 以下是单击按钮时调用的方法 public void getLocation View view TextView tv TextView findViewById R id gps coor
  • std::enable_if 的基本用法存在问题

    我正在尝试制作一个简单的模板函数 它给出了一些参数 它输出它们之间有一个空格 其中一些可以是枚举的元素 在这种情况下我想输出它的整数值 这是我的代码 include
  • 为生产者消费者问题的变体选择数据结构

    现在 我有一个队列 有多个生产者和单个消费者 消费者线程操作缓慢 此外 消费者通过 peek 操作从队列中取出元素 并且在消费操作完成之前 无法从队列中删除该元素 这是因为生产者线程作为辅助操作还会拍摄当时未完全处理的所有元素的快照 现在
  • 如何禁用 XPage 的客户端验证?

    我知道我可以通过以下方式禁用 xsp properties 中的服务器或应用程序 xsp client validation false 在控制层面通过 disableClientSideValidation true 如果没有为每个控件设
  • 无法联系 pgAdmin 4 服务器:致命错误

    我将 PostgreSQL 从 13 3 升级到 13 4 并收到 pgAdmin 4 的致命错误 我发现其他类似的问题尝试解决删除文件夹的问题 C Users myusername AppData Roaming pgadmin sess
  • 用类实例替换数组中的元素

    这类似于this所以请先阅读它以了解我想要做什么 现在 我想在有类实例时进行替换 例如 import numpy as np class B def init self a b self a a self b b arr np array
  • 从 Sqlite 获取项目并删除重复项目时的无效操作

    我想从sqlite数据库中获取项目 数据库中有大约6 000个项目 有些项目是重复的因此 我想在获取项目时删除这些重复信息 我使用了以下代码 public async static Task
  • Mongo通过正则表达式查找:仅返回匹配的字符串

    我的应用程序有以下堆栈 Ruby 上的 Sinatra gt MongoMapper gt MongoDB 该应用程序在数据库中放置了多个条目 为了交叉链接到其他页面 我添加了某种语法 例如 咖啡是一种由咖啡豆制成的黑色含咖啡因液体 茶 是
  • 解释 qsort 库中使用的函数的 typedef

    我正在使用 qsort 库函数对结构元素数组进行排序 在互联网上搜索时我发现了一个资源 信息 使用 C qsort 函数对结构进行排序 support microsoft 我知道 qsort 函数需要通过通用指针进行类型转换 但是我无法得到
  • 计算floor(pow(2,n)/10) mod 10 - pow(2,n) 的数字总和

    这也是一个与数学相关的问题 但我想用 C 实现它 所以 我有一个以下形式的数字2 n 我必须计算其数字之和 以 10 为基数 P 我的想法是用下面的公式来计算 sum 2 n mod 10 floor 2 n 10 mod 10 floor
  • 列表行为异常

    我正在解决一些问题并遇到了这个 Python代码 row col init 1 1 现在我附加这个init to row and col row append init row append init col append init col
  • 了解 CUDA 网格维度、块维度和线程组织(简单解释)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 GPU 如何组织线程来执行 Hardware 例如 如果 GPU 设备有 4 个多处理单元 并且每个单元可以运行 768 个线程 那么在给定时刻 真正并行运行的线程不会超过 4
  • 在 WinRT 中,如何加载图像,然后仅在写入图像之前等待加载所需的时间?

    我在 WinRT 项目中使用 WriteableBitmapEx 我将图像从用户图片库加载到 WriteableBitmap 中 但是 我无法立即写入该图像 如果我这样做 它将被图像本身覆盖 看起来是异步加载图像 然后它覆盖了我在其上的绘图