【发布时间】:2014-02-19 00:37:55
【问题描述】:
我似乎无法以编程方式创建要在 PictureBox 中显示的彩色位图。位图通常保存为文件,但在 PictureBox 中显示时边缘会变淡。以下是用于创建和显示位图的简化代码(在实际代码中,位图的生成与表单完全分开,因此无法强制位图大小与图片框大小匹配):
Bitmap Bmp = new Bitmap(4, 4, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
using (Graphics gfx = Graphics.FromImage(Bmp))
using (SolidBrush brush = new SolidBrush(Color.BlueViolet))
{
gfx.FillRectangle(brush, 0, 0, 4, 4);
}
然后将 PictureBox 上的Image 值设置为生成的位图:
pictureBox1.Image = Bmp;
这是显示在 300x300 图片框中的结果位图:
如何在 PictureBox 上设置图像,以便正确显示彩色位图(全实线)?
编辑:我仅限于生成较小的源位图,因此升级为 PictureBox 是不可避免的。当生成的源位图为 4px 或 100px 正方形时会出现问题,所以我相信这些是相关案例。
编辑:应该将 PictureBox 缩放设置为拉伸或缩放以使问题显现。在本例中,4x4 源位图被拉伸到 300x300。
编辑: 基本问题是 PictureBox 无法将小位图放大为大控件。这是令人困惑的,因为位图很好地升级为PictureBox.Background 图像。除非您有一个可以解决图像放大问题的灵丹妙药,否则我认为最好在您的答案中采用清晰简单的解决方法。
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
单色位图拉伸应该没有问题。你应该做的是在 Photoshop 或任何其他程序中打开原始的 4x4 位图,看看每个像素是否确实具有相同的颜色。好像没有
-
@valter 我确认保存的位图是一个实心正方形。同样,将生成的位图保存到磁盘,然后从磁盘加载并放入 PictureBox 显示时,也可以得到相同的结果。
标签: c# .net windows winforms picturebox