Tag: graphics

使用iTextSharp提取路径和形状

iTextSharp支持使用PdfContentByte类创建形状和路径,在那里你可以设置颜色和绘制曲线和基本元素……是否有一种机制可以做另一种方式? 我可以通过调用PdfReader.GetPageContent(…)来获取内容,但我没有找到“解析器”来读取这些操作,将它们应用于图形上下文,例如在面板上绘制它。 例: 1 1 1 RG 1 1 1 rg 0.12 0 0 0.12 16 31 cm q 480 421 m 4318 421 l 4318 5459 l 480 5459 l 480 421 l W n 0.074509806931 0.074509806931 0.074509806931 RG 0.074509806931 0.074509806931 0.074509806931 rg /OC /oc1 BDC …. 谢谢你的答复!

使用C#在多个页面上打印大图像

我正在尝试编写一些代码,可以在多个页面上打印大图像(1200宽x 475高)。 我尝试将图像划分为三个矩形(通过将宽度除以三)并调用e.Graphics.DrawImage三次,但这不起作用。 如果我在一个页面中指定大图像,它可以工作,但我如何将图像分割成多个页面?

需要C#function将灰度TIFF转换为黑白(单色/ 1BPP)TIFF

我需要一个C#函数,它将采用8位灰度TIFF的Byte [],并返回1位(黑白)TIFF的字节[]。 我对使用TIFF很新,但一般的想法是我们需要将它们从灰度或彩色转换为黑白/单色/二进制图像格式。 我们通过WCF作为Byte []接收图像,然后我们需要将此转换为黑白,以便将它们发送到进行进一步处理的组件。 我们暂时没有计划将它们保存为文件。 作为参考,在我们的测试客户端中,这是我们创建Byte []的方式: FileStream fs = new FileStream(“test1.tif”, FileMode.Open, FileAccess.Read); this.image = new byte[fs.Length]; fs.Read(this.image, 0, System.Convert.ToInt32(fs.Length)); fs.Close(); ——– ———更新 我认为这里可能有不止一个好的答案,但我们最终使用了CodeProject站点中的代码,并添加了以下方法来重载convert函数以接受Byte []以及位图: public static Byte[] ConvertToBitonal(Byte[] original) { Bitmap bm = new Bitmap(new System.IO.MemoryStream(original, false)); bm = ConvertToBitonal(bm); System.IO.MemoryStream s = new System.IO.MemoryStream(); bm.Save(s, System.Drawing.Imaging.ImageFormat.Tiff); return s.ToArray(); }

InterpolationMode HighQualityBicubic在resize的图像边缘引入人工制品

使用一些漂亮的标准C#代码来调整图像大小,并将其放在彩色背景上 Image imgToResize = Image.FromFile(@”Dejeuner.jpg”); Size size = new Size(768, 1024); Bitmap b = new Bitmap(size.Width, size.Height); Graphics g = Graphics.FromImage((Image)b); g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.FillRectangle(Brushes.Green, 0, 0, size.Width, size.Height); g.DrawImage(imgToResize, new Rectangle(0,150,768, 570)); b.Save(“sized_HighQualityBicubic.jpg”); 结果在第0和第1列像素中有一个有趣的人工制品。 第0列似乎与背景颜色混合,第1列变浅。 看到左上角放大了高质量的双三次和双三次。 ..和HighQualityBilinear 此论坛post似乎是有同样问题的人: 具有锐边的DrawImage 听起来像是我的错误? 我可以理解为什么颜色会在resize的图像的顶部混合。 但混合左/右边缘的颜色没有意义。 有谁知道防止这些文物的修复? 更新:这里的评论非常相似: GDI + InterpolationMode

C#渲染OpenCL生成的图像

问题:我正在尝试实时渲染动态Julia分形。 因为分形在不断变化,我需要能够每秒渲染至少20帧,最好是更多。 您需要了解的Julia分形是每个像素都可以独立计算,因此任务很容易并行化。 第一种方法:因为我已经习惯在C#中使用Monogame,所以我尝试在HLSL中编写一个可以完成这项工作的着色器,但是编译器一直在抱怨,因为我用了超过允许的64个算术插槽(我需要至少一千个) )。 第二种方法:使用CPU,可以预期大约两分钟生成一帧。 第三种方法:我开始使用名为Cloo的包装器学习OpenCL的基础知识。 实际上,通过使用OpenCL计算图像数据,然后从GPU获取数据,将数据存储在Texture2D中并将纹理绘制到屏幕上,我获得了快速,好的结果。 对于1000×1000图像,我每秒大约可以获得13帧。 这仍然不是我所希望的,因为图像应该是1920×1080来填满我的屏幕,并且帧速率非常明显。 我意识到我实际上是在GPU上生成图像,将数据发送到CPU然后将其发送回GPU,所以这似乎是一个不必要的步骤,如果可以删除,可能会解决我的问题。 我在一些论坛上看到OpenGL能够做到这一点,但我无法找到具体的信息。 问题:首先,是否有一种简单的方法可以直接绘制OpenCL生成的数据,而不涉及CPU(最好与Monogame兼容)? 如果不是这种情况,是否可以使用OpenGL实现它,然后将其与Monogame结合使用? 其次,为什么用简单的HLSL着色器不可能实现这一点? 由于HLSL和OpenCL都使用GPU,为什么HLSL在进行许多算术运算时会受到如此多的限制? 编辑 我发现这个网站大致完成了我想要的,但是使用了GLSL着色器。 这再次质疑我在HLSL中的成功。 不幸的是,由于monogame不支持GLSL(尚未),我的问题仍然没有答案。

如何绘制可选线?

我想创建一个用户能够操纵他绘制的线的应用程序。 删除行或选择它。 我该怎么做? 提前致谢 我设法使用硬编码矩形。 但我仍然不知道如何使用drawLine()我可以使用drawPath进行命中测试吗? 这是代码: private bool selectGraph = false; private Rectangle myrec = new Rectangle(50, 50, 100, 100); private Graphics g; private void panel1_Paint(object sender, PaintEventArgs e) { SolidBrush sb = new SolidBrush(Color.Blue); Pen p = new Pen(Color.Blue, 5); e.Graphics.DrawRectangle(p, myrec); e.Graphics.FillRectangle(sb, myrec); } private void panel1_MouseUp(object sender, MouseEventArgs e) { Point […]

确定winforms应用程序中像素的颜色

我希望能够在屏幕上的某个点确定winform的背景颜色,因此我可以根据特定的颜色采取一些措施。 可悲的是,System.Drawing库似乎没有指定一个允许我这样做的方法。 那么我应该如何确定某一点的颜色?

multithreading系统.Windows.Graphics

我当然知道我不能从不同的线程绘制到同一个Graphics对象,但是我也不能在不同的线程中绘制到不同的 Graphics对象吗? 考虑以下控制台程序: class Program { static ThreadDrawer[] drawers; static void Main(string[] args) { int numThreads = 8; drawers = new ThreadDrawer[numThreads]; for (int i = 0; i < numThreads; i++) { drawers[i] = new ThreadDrawer(); drawers[i].Start(); } for (int i = 0; i < numThreads; i++) { drawers[i].Wait(); } Console.WriteLine("Complete."); Console.ReadKey(); } class ThreadDrawer […]

在C#中制作图形饼图

我正在尝试编写一个Windows应用程序,显示一个包含七个不等切片(25%,20%,18%,17%,10%,10%,10%)的饼图,所有这些切片的颜色都不同。 到目前为止,我已经制作了带有颜色的钢笔和画笔并画了一个圆圈。 这就是我到目前为止所拥有的 private void Form1_Paint(object sender, PaintEventArgs e) { this.BackColor = Color.White; this.Text = “Pie Chart”; this.Width = 350; this.Height = 350; Pen black = new Pen(Color.Black); Pen blue = new Pen(Color.Blue); Pen green = new Pen(Color.Green); Pen red = new Pen(Color.Red); Pen orange = new Pen(Color.Orange); Pen pink = new Pen(Color.Pink); Pen purple […]

索引图像上的图形

我收到错误: “无法从具有索引像素格式的图像创建图形对象。” 在function: public static void AdjustImage(ImageAttributes imageAttributes, Image image) { Rectangle rect = new Rectangle(0, 0, image.Width, image.Height); Graphics g = Graphics.FromImage(image); g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.DrawImage(image, rect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, imageAttributes); g.Dispose(); } 我想问你,我该如何解决?