- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个表格,上面排列着许多 PictureBox,并非所有 PictureBox 都同时显示在表格上(表格上有滚动条以显示看不见的 PictureBox)。他们的图像位置是 Internet URL。我想在每个图像加载后立即在本地保存这些图像,因此我 Hook 了这些 PictureBoxes 的 ContentLoaded 事件。
问题是看不见的 PictureBoxes 不加载图像,因此它们的图像无法保存,直到滚动表单使它们可见。但我不能指望用户会一直滚动表单的全部内容。
有没有办法强制看不见的 PictureBox 加载它的图像?
谢谢。
编辑:
你好,DmitryG,问题可能是我的 PictureBoxes LoadAsync 在加载真实内容之前“加载图像”。在您的代码中,如果您添加
pb.ImageLocation = "http://images.google.com.vn/intl/en_ALL/images/logos/images_logo_lg.gif";
pb.LoadAsync();
在循环之前
pb.ImageLocation ="https://www.google.com/images/srpr/logo4w.png";
pb.LoadAsync();
然后加载表单,您将看到只有 7 个消息框,而不是 10 个。这是因为隐藏了 3 个图片框。
最佳答案
尽管图片框可见,您仍可以通过调用 PictureBox.LoadAsync 执行图像加载方法。当图像加载完成时 PictureBox.LoadCompleted将被提出:
pictureBox1.LoadCompleted += pictureBox1_LoadCompleted;
pictureBox1.InitialImage = Image.FromFile(@"... path to waiting-to-load image ...");
pictureBox1.ImageLocation = <...path to image...>;
pictureBox1.LoadAsync(); // perform loading
void pictureBox1_LoadCompleted(object sender, AsyncCompletedEventArgs e) {
// do something with loaded image
}
更新:自动滚动面板和 5 个图片框的示例代码。
panel1.AutoScroll = true;
panel1.Height = 1000;
for(int i = 0; i < 5; i++) {
PictureBox pb = new PictureBox();
pb.Dock = DockStyle.Top;
pb.Height = panel1.Height/2;
pb.WaitOnLoad = false;
pb.InitialImage = Image.FromFile("WaitingToLoad.gif");
pb.ImageLocation = @"https://www.google.com/images/srpr/logo4w.png";
pb.LoadCompleted += pb_LoadCompleted;
pb.Parent = panel1;
pb.LoadAsync(); //<<<<<
}
//
void pb_LoadCompleted(object sender, AsyncCompletedEventArgs e) {
MessageBox.Show("Load completed!");
}
关于c# - 强制看不见的 PictureBox 加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16646281/
这个问题在这里已经有了答案: Transparent control over PictureBox (8 个答案) 关闭 5 个月前。 我希望 pbGrade 位于 pbItemtype 之上(p
如何将图片框内的图片移动到另一个图片框? 我想用它来移动棋子。我有一个为每个地方拍摄的图片框,所以我有 64 个图片框。 最佳答案 您可以只分配 Image在一个图片框中显示到另一个图片框。如果您随后
大家好,我正在开发跳棋游戏。我有这种宣布获胜者的方法,我希望是否有办法使用循环来做到这一点。目前它工作得很好 :),但我不得不对其进行硬编码而不是使用逻辑。 public void checkWinn
我正在编写一个可以播放幻灯片(以及其他内容)的程序。幻灯片由 backgroundWorker 控制,并设置为 while(true) 循环,因此它将不断播放图像。我的问题是我不确定如何处理旧图像以免
当我在运行时向表单添加图片框时,图片框的行为完全符合我的要求。但是当我将它添加到面板时,图片框会扩展以适合图像。 代码如下: private PictureBox globalPicBox = (Pi
我有一个 PictureBox可以有多种不同的大小(取决于屏幕分辨率、窗口状态等)。我想要适合我的 image到 PictureBox当 image 中的任何一个尺寸(宽度或高度)低于 Picture
我有一个 PictureBox,我在其中使用下面的代码来移动我的对象。我需要在表单中添加一些按钮,但是当我启动程序时,箭头键在按钮之间导航,而不是我的输入按键。我试过很多Form.Load() 上的
我不确定为什么,但每当我处理碰撞时,似乎控件的顶部和左侧属性一切正常,但右侧和底部属性却不太顺利。我不确定是不是因为它们是只读属性,但请有人帮忙。 代码如下 Playground (面板)类
最近想试试AForge.NET因为我发现它非常简单,所以我决定使用 Video.FFMPEG 命名空间来制作一些简单的视频播放,这样我就可以将每一帧直接放在图片框上。仅此一项效果很好,但我想在不重要之
我在主窗体上有两个图片框,一个是来自安装在机器人顶部的网络摄像头的视频流,另一个是一些用户反馈,它不时更新,并带有它认为可以看到的图表(命名 map )。两张图片都可以由任何线程更新。如何安全地更新这
我正在使用 C# 开发一个工具,用于捕获屏幕的一部分并将其放入 PicBox 中,我已经能够获取屏幕截图,但我在某一点上遇到了麻烦。我拍摄的镜头是从屏幕的开头拍摄的,我想给出镜头应该开始的坐标(X,Y
如何将图片设置为 PictureBox在代码中? 下面的代码给出了错误: Cannot implicitly convert Bitmap to String. private void pt
我必须在 C# 中制作一个窗口窗体,其中两个 PictureBox 重叠。 TopPictureBox 包含一个透明的 png 图片。默认情况下,可以通过单击 TopPictureBox 中图像的任何
我正在编写一个简单的游戏 - 贪吃蛇。我想要背景和我的蛇。我认为最好的方法是使用两个 pictureBox(一个有背景,第二个 - 透明,上面有蛇)。 这是个好办法?以及如何将几个小图像(蛇的片段)放
我想在 Winform 应用程序中显示一些图形,它将是股票的图表绘制工具。我认为(但我不确定...)我必须使用 PictureBox,并使用 System.Drawing.Graphics 类的绘图原
我正在为 Windows Mobile (Compact Framework 2.0) 开发一个应用程序。它有一个带 PictureBox 的 WinForms。 我想移动PictureBox的图片,
首先,我要感谢您抽出宝贵时间 :) 所以这是我的问题.. 我正在尝试制作一个小游戏,在其中生成 PictureBox 并将其从右向左发送,然后我的 PictureBox 播放器会尽量避免它们跳跃。所以
我有 pictureBox1, pictureBox2, picturebox3, .... 在 C# 中,有没有办法可以循环更改第一个 picturebox 的背景颜色,然后等待,然后更改 pict
我发现 I. 方法比 II. 方法慢。我的应用程序进行实时图像处理。我知道 C# 对于这个目的来说并不理想,但我可以分离性能关键的东西并在 C++ 中制作它。我想知道为什么在 C# 中没有任何计算的简
我需要在 C# 中绘制费马螺线。我做到了,但我希望我的绘图填充在 PictureBox 中,无论实际尺寸有多大。 public void DrawSpiral(double delta, doub
我是一名优秀的程序员,十分优秀!