Tag: 图形

将System.Drawing.Graphics保存到png或bmp

我有一个我在屏幕上绘制的Graphics对象,我需要将其保存到png或bmp文件中。 图形似乎不直接支持,但必须以某种方式。 步骤是什么?

如何删除c#windows窗体中的绘制圆?

我在Windows窗体中画了一个圆圈 Pen pen = new Pen(Color.Black, 3); Graphics gr = this.CreateGraphics(); gr.DrawEllipse(pen, 5,5,20,20); 如何删除它…

如何设置行间距Graphics.DrawString

我到达在一个视角内的多行上输出一个字符串,但没有找到减少或扩大行间距的方法。 怎么做?

如何在C#窗体中绘制Zoomable图像

所以我正在实施一个项目,可以读取图像平移,缩放和做其他东西……一切顺利,直到我尝试用鼠标右键实现绘图。 问题是,当我画一条线时,图像上出现的线与我在屏幕上绘制的线不对应,这意味着它被移动了我知道它因为图像的重新resize和缩放,但是当我绘制时图像上的线条与其原始大小(图像)和平移也; 我没有问题。 这是代码。 首先,我点击浏览并选择图像时如何加载图像 Myimage = new Bitmap(ImagePath); resized = myImage.Size; imageResize(); pictureBox.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox_Paint); pictureBox.Invalidate(); imageResize函数执行以下操作: void imageResize() { //calculated the size to fit the control i will draw the image on resized.Height = someMath; resized.Width = someMath; } 然后在pictureBox_Paint事件的事件处理程序中我写道: private void pictureBox_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { // Create a local version […]

通过它的句柄获得一个窗口的界限

我试图获得当前活动窗口的高度和宽度。 [DllImport(“user32.dll”, CharSet = CharSet.Auto, ExactSpelling = true)] public static extern IntPtr GetForegroundWindow(); [DllImport(“user32.dll”)] private static extern bool GetWindowRect(IntPtr hWnd, Rectangle rect); Rectangle bonds = new Rectangle(); GetWindowRect(handle, bonds); Bitmap bmp = new Bitmap(bonds.Width, bonds.Height); 此代码不起作用,因为我需要使用RECT ,我不知道如何。

如何在保持控件可见的同时为ac#表单添加透明度?

更新:我花了几天时间搞乱了透明度的东西。 今晚我又开始搞砸了。 我使用Hans Passant的解决方案得到了一个新结果: 新结果http://img3.imageshack.us/img3/4265/icontransp.jpg http://img3.imageshack.us/img3/4265/icontransp.jpg Passant的解决方案确实解决了透明背景渐变的问题。 但是,我仍然遇到问题,我的图标中的透明颜色与表单的BackColor混合。 您可以在上图中看到图标各个部分周围的紫红色。 原始内容: 我现在已经在这几个小时了,我运气不好。 我已经搞砸了Control.Region,Form.TransparencyKey,Form.Opacity,以及其他一些带有一些时髦效果的随机事物。 最近我一直在尝试自定义我的桌面,并决定搞乱应用程序docker。 在看到Mac Dock和一些第三方Windows实现提供的内容之后,我决定构建自己的。 最终我想继续使用Win32 API。 目前我只想使用尽可能多的C#和.Net框架function。 我想在这个应用程序中做一些事情: 显示带有渐变背景的表单/菜单。 允许表单/菜单具有透明度,同时保持图标不透明。 显示包含透明背景的图标。 菜单和图标应该能够接收与鼠标相关的事件(hover,离开,点击,dragover,dragdrop和其他一些事件)。 这就是我拍摄的效果: 期望的效果http://img207.imageshack.us/img207/5716/desired.jpg http://img207.imageshack.us/img207/5716/desired.jpg 此图像显示了我想要实现的视觉效果。 这是我为一个名为Rainmeter的程序制作的皮肤。 该图像显示了皮肤后面的Notepad ++,其中一些皮肤文件在编辑器中打开。 菜单是透明的,但图标保持不透明。 我的方法: 使用表单作为菜单似乎是我合乎逻辑的首选。 我对事件有基本的了解。 我不太确定如何创建自己的点击事件,因此表单可以使事件处理更容易。 我考虑了一些图标选项。 我决定使用PictureBoxes作为图标,因为它们可以保存图像并接收事件。 一旦我完成了菜单中所有结构逻辑的代码,我就开始玩它来尝试获得我想要的视觉效果。 Form.Opacity影响了表单上所有内容的透明度。 由于我希望图标完全不透明,所以我独自留下了这个属性。 我尝试将BackColor设置为Color.Transparent,但这会产生错误。 我玩了几个组合… 组合效果http://img204.imageshack.us/img204/757/effectsi.jpg http://img204.imageshack.us/img204/757/effectsi.jpg 我使用Drawing2D.LinearGradientBrush将渐变绘制到位图中。 然后将此位图放置为Form.BackgroundImage或PictureBox.Image。 如果使用,PictureBox的大小将覆盖整个表单并发送到后面。 我注意到一些Form.BackgroundColor会与我的图标轮廓混合在一起。 图标沿边缘具有透明度,以获得更平滑的外观。 由于图标正在拾取Form的BackgroundColor,这使我认为PictureBoxes在图标加载到表单时创建新图像。 然后,当图像的半透明部分与表单后面的任何颜色合并时,它们将与Form的BackgroundColor合并。 白色桌面效果http://img838.imageshack.us/img838/8299/whitedesktop.jpg http://img838.imageshack.us/img838/8299/whitedesktop.jpg 在此图像中,即使Form的紫红色现在完全透明,您也可以看到图标中存在的紫红色。 我忘了指出在每种情况下使用相同的绿色到黄色渐变,Alpha值为150。 […]

在其中心旋转图形位图

我正在为学校做一个项目,我们需要在不使用XNA的情况下在C#中进行基本的自上而下的比赛。 首先让我告诉你,到目前为止我们学到的关于编程的东西与制作甚至远程看起来像一场比赛的东西没什么关系。 它没有比数组,循环等更难。所以我们没有学习图形或类似的东西。 说完所有我有以下问题。 我们创建了一个Graphics对象,然后使用DrawImage并使用car.jpg中的位图。 graphics = e.Graphics; graphics.RotateTransform(angle); graphics.DrawImage(car, xPos, yPos, car.Width, car.Height); 然后我们等待按键,例如右 case Keys.Right: if (angle != 360) { angle += 10; } else { angle = 0; } this.Refresh(); break; 我们遇到的问题是旋转的枢轴点位于左上角。 因此,一旦我们将汽车移动到类似(20,25)并开始旋转它,它将使用(0,0)作为旋转中心。 我们想要实现的是将中心旋转点置于汽车的中心位置。 我们一直在尝试寻找改变centerX和centerY的方法,但得出的结论是位图无法实现这一点。 我们一直在努力解决这个问题超过2天,似乎无法找到任何解决方案来实现我们想要的东西。 有没有什么我们在创建Graphics对象时做错了,还是有一种完全不同的方式来改变汽车的centerX和centerY ?

从图像中删除周围的空白

我有一块从客户那里收到的产品图片。 每个产品图像都是一张图片,它是用白色背景拍摄的。 我想裁剪图像的所有周围部分,但只留下产品在中间。 这可能吗? 举个例子:[ http://www.5dnet.de/media/catalog/product/d/r/dress_shoes_5.jpg] [1 ] 我不希望删除所有白色像素,但我确实想要裁剪图像,以便最顶部的像素行包含一个非白色像素,最左边的垂直像素行包含一个非白色像素,底部 – 大多数水平像素行包含一个非白色像素等。 C#或VB.net中的代码将不胜感激。

WinForms的免费或开源图表组件

我需要能够以编程方式生成依赖关系图。 我希望它能够生成一堆带有标签和连接器的盒子,理想情况下,组件会将它们自动定位到设计表面上,然后可以手动重新排列。 我正在使用WinForms和C#2.0(VS2005)。 编辑:但是,因为它将是一个内部工具,如果在该领域有任何建议,我可以使用3.5 SP1和WPF。 必须是免费或开源的。 有什么建议?

如何在c#中旋转图像x度?

我做了一些搜索,我找不到任何function,做我想做的事情。 我有一个带有文本的扫描文档的图像文件,但文档旋转了一些度数,所以我想旋转它,使文本相互串联。 在一个完美的世界,它应该是一个自动执行此function的function,但我无法找到任何东西和我理解的自动工作,它需要对图像进行一些分析,我认为这是一件大事。 但后来我已经做了一个工具来手动旋转网站上的图像,但现在我需要一个function来保存旋转到图像文件。 这似乎是一些不同的方法,但没有人我测试做我想做的。 我发现的function几乎就像我的作品一样: public static Bitmap RotateImg(Bitmap bmp, float angle, Color bkColor) { int w = bmp.Width; int h = bmp.Height; PixelFormat pf = default(PixelFormat); if (bkColor == Color.Transparent) { pf = PixelFormat.Format32bppArgb; } else { pf = bmp.PixelFormat; } Bitmap tempImg = new Bitmap(w, h, pf); Graphics g = Graphics.FromImage(tempImg); g.Clear(bkColor); […]