我有一个a的实例,System.Drawing.Bitmap并希望以一种形式将它提供给我的WPF应用程序System.Windows.Media.Imaging.BitmapImage.
对此最好的方法是什么?
我在.Net中使用System.Drawing.Image进行从png到jpeg的简单转换.我基本上只使用这两行代码:
Image img = Image.FromFile(filename);
img.Save(newFilename, System.Drawing.Imaging.ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)
它工作正常,除了png文件由于alpha通道包含透明度.在这种情况下,转换的jpeg具有黑色背景.有没有办法让背景变白?
我目前正在尝试保存位图图像,但背景正在变为黑色.
我可以"另存为"图像完美无缺.我也可以"保存"图像.这更难,因为我不得不覆盖现有的图像.
但是,当我"保存"我的图像时,背景变黑了.我不知道是什么导致了它.
这是我的代码:
Bitmap tempImage = new Bitmap(DrawArea);
DrawArea.Dispose();
if (extension == ".jpeg")
tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
else
tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp);
DrawArea = new Bitmap(tempImage);
pictureBox1.Image = DrawArea;
tempImage.Dispose();
Run Code Online (Sandbox Code Playgroud) 我正在制作这个C++程序,它有按钮,按钮容器,聊天框等,我想用纹理包裹它.
我想为我制作的所有矩形生成一个平滑的边缘,我不希望顶点绘图方法为它做的工作,因为它消耗更多的CPU使用而且看起来不是很好,我不知道是否它可以使用纹理坐标(即glTertCoord(u,v)与glVertex2f(x,y) w/c应该只有4,因为它是一个四边形)
我用来加载纹理使用SDL_LoadBMP() w/c只能加载.bmp格式.(我不确定因为它只说LoadBMP).
可以在.BMP格式处理的透明度?如果是的话,该怎么做?
你能告诉我一些代码样本使用SOIL来加载格式.gif的图像或任何其他可以处理图像透明度的格式吗?
四边形可以处理六边形或星形的不规则/多边形形状而不绘制其背景吗?
*如何导入通过c ++ opengl呈现的原始文本框,以便将文本复制到剪贴板中?至于我的节目中的聊天会话.
我创建了自己的库,使用GL_POINTS绘制文本,并且在调整窗口大小时看起来不太好,因为这些点是分散的.这需要const char*避免文本,#include <*string*>因为我希望我的程序不依赖于C++的核心功能.
所以更好的解决方案是使用位图绘制它.
有人建议使用图像绘制它,所以我真的需要透明度的东西,因为我希望它只使用四边形绘制.
我正在尝试调整透明png的大小并将其保存为单帧gif图像.让我们跳过调整大小的部分,当你尝试将透明png保存为gif时,你会在输出gif中看到黑色背景:
Bitmap n = new Bitmap(targetPngPath);
n.Save(@"C:\1.gif", ImageFormat.Gif);
Run Code Online (Sandbox Code Playgroud)
是的,我可以将黑色背景变成白色,但这不是我想要的.即使我可以使用MakeTransparentMethod 删除黑色,但它会删除图像中的每个黑色,我们将没有标准的透明图像.
我们也可以做一个TRICK保存gif图像,我们保留文件名扩展名,但我们会将其保存为PNG格式,如下所示:
n.Save(@"C:\1.gif", ImageFormat.Png);
Run Code Online (Sandbox Code Playgroud)
但它也不是标准的.那么有没有办法安全地保存透明的png作为具有透明度的gif图像?
Here is my wpf code
<InkCanvas x:Name="inkCanvas" Margin="9,325,210,193" Background="Azure"></InkCanvas>
And also there is a button
When pressing the button, i want to save image drawn to a file. here is my code
private void button1_Click(object sender, RoutedEventArgs e)
{
int margin = (int)inkCanvas.Margin.Left;
int width = (int)inkCanvas.ActualWidth - margin;
int height = (int)inkCanvas.ActualHeight - margin;
RenderTargetBitmap rtb = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Default);
rtb.Render(inkCanvas);
using (FileStream fs = new FileStream("path", FileMode.Create))
{
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
encoder.Save(fs); …Run Code Online (Sandbox Code Playgroud)