Tag: 图形

图中2个节点之间的所有路径

我必须进行一个不知情的搜索(广度优先搜索)程序,它接受两个节点并返回它们之间的所有路径。 public void BFS(Nod start, Nod end) { Queue queue = new Queue(); queue.Enqueue(start); while (queue.Count != 0) { Nod u = queue.Dequeue(); if (u == end) break; else { u.data = “Visited”; foreach (Edge edge in u.getChildren()) { if (edge.getEnd().data == “”) { edge.getEnd().data = “Visited”; if (edge.getEnd() != end) { edge.getEnd().setParent(u); } else […]

在C#中将旋转的文本绘制到图像

我正在使用Graphics类的drawtring方法在Image上绘制一个String。 g.DrawString(mytext, font, brush, 0, 0); 我正在尝试使用图形对象的旋转变换function按角度旋转文本,以便可以以任何角度绘制文本。如何使用旋转变换来执行此操作。 我使用的旋转变换代码是 Bitmap m = new Bitmap(pictureBox1.Image); Graphics x=Graphics.FromImage(m); x.RotateTransform(30); SolidBrush brush = new SolidBrush(Color.Red); x.DrawString(“hi”, font,brush,image.Width/2,image.Height/2); //image=picturebox1.image pictureBox1.Image = m; 文本是以旋转的角度绘制的,但它不是在我想要的中心绘制.Plz帮助我。

Bitmap.Maketransparent函数的结果不同

我的问题是我想让图像背景透明。 以下function对我来说很好,但在不同的机器上测试时,我发现有很多神器颜色,透明度不像我的机器和其他机器那样清晰。 我正在使用调试版本,测试是在发布版本上完成的。 但即使使用发布版本,我们也会在不同的计算机上看到不同 Image CreateTransparentBackgroundImage(Image image) { using (Bitmap tempBitmap = new Bitmap(image.Width, image.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)) { var g = Graphics.FromImage(tempBitmap); Rectangle rec = new Rectangle(0 ,0,image.Width, image.Height); g.DrawImage(image,rec, 0, 0,image.Width,image.Height, GraphicsUnit.Pixel); tempBitmap.MakeTransparent(System.Drawing.Color.White); g.Dispose(); return (Image)tempBitmap.Clone(); } } 任何帮助将非常感激。

检查点是否在旋转的矩形中(C#)

我有一个C#程序(Windows窗体),它在一个图片框上绘制一些矩形。 它们也可以以一定角度绘制(旋转)。 我知道每个矩形的起点(左上角),它们的大小(宽度+高度)和它们的角度。 由于旋转,起点不一定是左上角,但这并不重要。 然后当我点击图片框时,我需要检查我点击了哪个矩形(如果有的话)。 所以我需要一些检查点是否在矩形中的方法,但我还需要考虑每个矩形的旋转。 有人知道在C#中这样做的方法吗?

在不使用Windows窗体的情况下绘制C#图形

有人可以提供一个不使用Windows窗体绘制图形的示例吗? 我有一个没有控制台窗口或Windows窗体的应用程序,但我需要绘制一些基本图形(线条和矩形等) 希望有道理。

c#如何在使用winforms时检测是否已点击一条线(在表格上绘制/绘制)?

我有一个winforms应用程序 这是我的代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication12 { public partial class Form1 : Form { Graphics gr; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { gr = this.CreateGraphics(); MyLine myline = new MyLine(); myline.P1 = new […]

如何强制我想要的任何显示分辨率/时间?

我无法找到一种方法来强制我想要在我的C#程序中显示任何显示分辨率/时间。 我正在运行带有GeForce 210显卡的Windows 7。 我目前实现这些自定义分辨率的方法是使用驱动程序GUI手动添加自定义分辨率,然后使用Windows调用更改为这些分辨率,但我需要一种实时添加新自定义分辨率的方法。 我已经研究过NVAPI,但我找不到办法做到这一点。 我也查看了图形驱动程序的命令行工具,但我无法让它工作。 我最后的办法是重写注册表中的值,但我真的想避免这种情况。 我愿意使用不同的编程语言或第三方工具,只要我可以通过我的程序从命令行调用它。 谁能指出我正确的方向? 提前致谢。 更新(2011年8月16日):我一直在与NVIDIA一起解决这个问题,他们正在为我提供一个高级NVAPI,这将允许我重新创建其驱动程序的function。 他们还证实,他们提供的NVAPI的基本版本不会这样做。

将Graphics对象转换为Bitmap

我的图形对象确实存在以下问题。 编辑: 我有一个picturebox_image (imageRxTx) ,这是一个来自相机的实时流。 我在绘制事件中所做的是在图像imageRxTx上绘制一些线条(未在下面的代码中显示)。 到目前为止这没有问题。 现在我需要检查imageRxTx中的圆圈,因此我必须使用需要Bitmap作为参数的方法ProcessImage() 。 不幸的是我没有Bitmap图像,而是我的imageRxTx的句柄(hDC) 。 问题 :如何从我的图形对象中获取imageRxTx并将其“转换”为我需要在方法ProcessImage(位图位图)中使用的位图图像 ? 需要在paint-event中连续调用此方法,以便检查我的相机的实时流(imageRxTx)。 这是我的代码: private void imageRxTx_paint(object sender, PaintEventArgs e) { var settings = new Settings(); // Create a local version of the graphics object for the PictureBox. Graphics Draw = e.Graphics; IntPtr hDC = Draw.GetHdc(); // Get a handle to image_RxTx. Draw.ReleaseHdc(hDC); […]

MeasureString和DrawString的区别

为什么我必须将MeasureString()结果宽度增加21% size.Width = size.Width * 1.21f; 逃避DrawString() Word Wrap? 我需要一个解决方案来获得确切的结果。 相同的字体,相同的字符串格式,两个函数中使用的文本相同。 从OP回答: SizeF size = graphics.MeasureString(element.Currency, Currencyfont, new PointF(0, 0), strFormatLeft); size.Width = size.Width * 1.21f; int freespace = rect.Width – (int)size.Width; if (freespace 0) ImageSize = freespace; else ImageSize = 0; } int FlagY = y + (CurrencySize – ImageSize) / 2; int FlagX […]

在图形变换比例后缺少第一个像素列的一半

我注意到在OnPaint事件上的图形变换比例之后,不会绘制图像的第一个像素列的一半。 重现它所需的所有代码都在post的末尾。 基本上我已经创建了一个派生自PictureBox的类,名为PictureBox2,它会覆盖OnPaint方法来执行Scale转换。 它还将InterpolationMode更改为NearestNeighbor以防止Graphics更改像素外观。 PictureBox控件已添加到名为Form6_GraphicsTest的Form中。 控制在所有方面都是固定的。 PictureBox2背面颜色更改为蓝色,Form返回颜色为深灰色。 正如您在下面的图像中看到的那样,只绘制了图像第一个像素列的1/2。 为什么?? 我在这里遗漏了什么? 这是原始的10×10 8bpp图像: 编辑 – 解决方案对于一些奇怪的原因,PixelOffsetMode.Default吃了0.5像素。 解决方案:PixelOffsetMode.Half或HighQuality! 代码PictureBox2.cs using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; namespace GraphicsTest { public class PictureBox2 : PictureBox { public PointF Zoom = new PointF(20, 20); private InterpolationMode interpolationMode = InterpolationMode.NearestNeighbor; /// /// Paint the image /// /// The paint event protected […]