我正在上传并将缩略图副本保存在缩略图文件夹中。 我正在使用以下链接: http://weblogs.asp.net/markmcdonnell/archive/2008/03/09/resize-image-before-uploading-to-server.aspx 但 newBMP.Save(directory + "tn_" + filename); 导致exception“GDI +中发生一般性错误”。 我试图给予文件夹权限,也试图保存时使用新的单独的bmp对象。 编辑: protected void ResizeAndSave(PropBannerImage objPropBannerImage) { // Create a bitmap of the content of the fileUpload control in memory Bitmap originalBMP = new Bitmap(fuImage.FileContent); // Calculate the new image dimensions int origWidth = originalBMP.Width; int origHeight = originalBMP.Height; int sngRatio = origWidth / […]
我想直接在C#中的桌面上绘制。 从search一下,我最终使用桌面HDC的一个graphics对象(空)。 然后,我通常使用这个Graphics对象绘制。 问题是当屏幕的任何部分被重新绘制时,我的形状会丢失。 我尝试了一个While循环,但实际上最终的绘制速度与应用程序的速度一样快,而不是桌面的更新速度。 通常情况下,我需要将我的绘图代码放在“OnPaint”事件中,但桌面上不存在这样的事情。 我该怎么做? 示例代码: https : //stackoverflow.com/questions/1536141/how-to-draw-directly-on-the-windows-desktop-c
我正在C#/ .Net中创build一个简单的vector绘图应用程序。 绘图是在一个面板中完成的,但是我没有使用OnPaint()事件 – 事实上,OnPaint()甚至只是调用另一个实际绘制文档中所有东西的方法。 我试图添加双缓冲,但是当我将DoubleBuffered设置为true时,闪烁问题更糟糕。 为什么是这样? 如果我想双重缓冲控制,我是否必须完全用OnPaint()事件绘制所提供的Graphics对象,而不是使用Panel.CreateGraphics(),然后绘制到那个? 编辑:这是我使用的基本代码。 private void doc_Paint(object sender, PaintEventArgs e) { g = doc.CreateGraphics(); Render(ScaleFactor, Offset); } private void Render(float ScaleFactor, PointF offset) { foreach (Line X in Document.Lines) { DrawLine(X.PointA, X.PointB, X.Color, X.LineWidth); } } private void DrawLine(PointF A, PointF B, Color Color, float Width) { Pen p = […]
好的,我正在寻找一个function或东西,将读取我的显示器上的某个像素的颜色,当这种颜色被检测到,另一个function将被启用。 我使用RGB图。 所有帮助赞赏。 谢谢。
我想教自己的C#,并从各种各样的消息来源得知,函数获取和setpixel可以是非常缓慢。 什么是一些替代scheme,性能改进真的很重要? 提前致谢! 我的代码的一大块供参考: public static Bitmap Paint(Bitmap _b, Color f) { Bitmap b = new Bitmap(_b); for (int x = 0; x < b.Width; x++) { for (int y = 0; y < b.Height; y++) { Color c = b.GetPixel(x, y); b.SetPixel(x, y, Color.FromArgb(cA, fR, fG, fB)); } } return b; }
使用System.Drawing.Image 。 如果图像宽度或高度超过最大值,则需要按比例resize。 resize后,需要确保宽度或高度都不超过限制。 宽度和高度将被resize,直到它不会自动超过最大值和最小值(可能的最大尺寸)并保持比例。
我有一些我想保存为图像的二进制数据。 当我尝试保存图像时,如果用于创build图像的内存stream在保存之前closures,则会引发exception。 我这样做的原因是因为我dynamic创build图像,因此我需要使用内存stream。 这是代码: [TestMethod] public void TestMethod1() { // Grab the binary data. byte[] data = File.ReadAllBytes("Chick.jpg"); // Read in the data but do not close, before using the stream. Stream originalBinaryDataStream = new MemoryStream(data); Bitmap image = new Bitmap(originalBinaryDataStream); image.Save(@"c:\test.jpg"); originalBinaryDataStream.Dispose(); // Now lets use a nice dispose, etc… Bitmap2 image2; using (Stream […]
这似乎是一个臭名昭着的错误在整个网络上。 因为我的情况不适合,所以我一直无法找到我的问题的答案。 将图像保存到流中时引发异常。 奇怪的是,这与PNG完美的作品,但给出了上述错误与JPG和GIF这是相当混乱。 那里的大多数类似的问题都涉及将图像保存到没有权限的文件。 讽刺的是,解决方案是使用一个内存流,因为我正在做… public static byte[] ConvertImageToByteArray(Image imageToConvert) { using (var ms = new MemoryStream()) { ImageFormat format; switch (imageToConvert.MimeType()) { case "image/png": format = ImageFormat.Png; break; case "image/gif": format = ImageFormat.Gif; break; default: format = ImageFormat.Jpeg; break; } imageToConvert.Save(ms, format); return ms.ToArray(); } } 更多的例外细节。 这导致这么多问题的原因是缺乏解释:( System.Runtime.InteropServices.ExternalException was unhandled by user […]