Tag: gdi +

动态显示数百个图像

我必须创建一个能够显示电影厅(不知道确切的单词)模式的表单。 基本上我必须显示大量(由另一个来源给出)独立的椅子状图像,这些图像可以在点击时改变颜色(状态)。 我在网上搜索解决方案,但我真的不知道如何管理这个。 有人能帮我吗?

使用GDI +创建具有透明背景的图像?

我正在尝试创建一个透明背景的图像,以显示在网页上。 我尝试了几种技术,但背景总是黑色的。 如何创建透明图像然后在其上绘制一些线条?

如何确定GDI +中两条线的交点?

我正在使用.NET来创建一个具有绘图表面的应用程序,类似于Visio。 UI使用Graphics.DrawLine连接屏幕上的两个对象。 这个简单的实现工作正常,但随着表面变得更复杂,我需要一种更健壮的方式来表示对象。 这些强大要求之一是确定两条线的交叉点,因此我可以通过某种图形指示分离。 所以我的问题是,有人可以建议一种方法吗? 也许使用不同的技术(可能是GraphViz)或算法?

使用混合模式颜色在另一个图像上绘制图像

在Photoshop中,您可以选择“颜色”(从底部开始的第二个)将混合模式设置为下一个较低层: 如果图像顶部只有一个渐变,结果可能如下所示: 我在某处找到的颜色混合模式的描述是: 颜色将下层的色调和饱和度改变为上层的色调和饱和度,但仅留下亮度。 到目前为止我的代码是: using(var g = Graphics.FromImage(canvas)) { // draw the lower image g.DrawImage(lowerImg, left, top); // creating a gradient and draw on top using (Brush brush = new LinearGradientBrush(new Rectangle(0, 0, canvasWidth, canvasHeight), Color.Violet, Color.Red, 20)) { g.FillRectangle(brush, 0, 0, canvasWidth, canvasHeight); } } 但那是 – 当然 – 只是在较低的图像上绘画。 所以问题是: 如何使用Photoshop中提供的混合模式“颜色”在另一个图像上绘制图像? 编辑: […]

调用Bitmap.GetHicon时GDI +中发生了一般错误

为什么我收到“GDI +中发生了一般错误”的例外情况? IntPtr hicon = tempBitmap.GetHicon(); Icon bitmapIcon = Icon.FromHandle(hicon); return bitmapIcon; 我的应用程序运行超过30分钟时发生错误。 (我每秒都将System.Drawing.Bitmap转换为System.Drawing.Icon )

如何获取TextRenderer使用的确切文本边距

System.Windows.Forms.TextRenderer.DrawText方法根据flags参数的值呈现带或不带左右填充的格式化文本: TextFormatFlags.NoPadding – 将文本紧密地放入边界框中, TextFormatFlags.GlyphOverhangPadding – 添加一些左右边距, TextFormatFlags.LeftAndRightPadding – 增加更大的利润。 现在,我的问题是如何获得DrawText为给定设备上下文,字符串,字体等文本添加的填充(左和右)的确切数量 ? 我使用.NET Reflector挖掘.NET 4,发现TextRenderer计算“悬垂填充”,它是字体高度的1/6,然后将此值乘以使用这些系数计算左右边距: 对于TextFormatFlags.GlyphOverhangPadding ,左边1.0,右边1.5, 左侧2.0,右侧2.5,用于TextFormatFlags.LeftAndRightPadding 。 生成的值将向上舍入并传递给DrawTextExA或DrawTextExW本机API函数。 重新创建此过程很困难,因为字体的高度不是来自System.Drawing.Font而是来自System.Windows.Forms.Internal.WindowsFont ,这些类为同一字体返回不同的值。 并且涉及System.Windows.Forms.Internal命名空间中的许多其他内部BCL类。 反编译所有这些并在我的应用程序中重用它们的代码不是一个选项,因为这将是一个严重的.NET实现依赖。 这就是为什么我需要知道WinForms中是否有一些公共API,或者至少我可以使用哪些Windows函数来获取左右边距的值。 注意:我尝试使用和不使用填充的TextRenderer.MeasureText并比较结果,但这只给出了左边距和右边距的总和,我需要单独使用它们。 注意2:如果你想知道我为什么需要这个:我想绘制一个包含多种字体/颜色的字符串。 这涉及到使用NoPadding选项为每个统一格式化的子字符串调用DrawText一次(这样文本不会传播)但我还想在整个多格式文本的开头和结尾处手动添加正常的GlyphOverhangPadding 。

使用自定义TTF字体进行DrawString图像渲染

我在服务器端使用GDI +创建一个流式传输到用户浏览器的图像。 没有标准字体符合我的要求,因此我想加载TrueType字体并使用此字体将我的字符串绘制到图形对象: using (var backgroundImage = new Bitmap(backgroundPath)) using (var avatarImage = new Bitmap(avatarPath)) using (var myFont = new Font(“myCustom”, 8f)) { Graphics canvas = Graphics.FromImage(backgroundImage); canvas.DrawImage(avatarImage, new Point(0, 0)); canvas.DrawString(username, myFont, new SolidBrush(Color.Black), new PointF(5, 5)); return new Bitmap(backgroundImage); } myCustom表示服务器上未安装的字体,但我有TTF文件。 如何加载TTF文件以便我可以在GDI +字符串渲染中使用它?

如何缝合几乎没有重叠的图像?

我正在尝试使用几乎没有重叠的图像创建全景图,但我知道相机的角度,所以我确切知道有多少重叠,我知道图像的顺序,所以我知道每个人在全景图中的位置。 作为第一次通过,我只是将图像拼凑在一起,但结果不够好。 有没有办法将位图裁剪为梯形以消除(大部分)重叠,然后在缩放之前将位图拉回到矩形? 我知道这会在拉伸过程中产生扭曲,并且梯形只是近似于Bitmap实际需要裁剪的方式,但我希望这会足够好。

如何在无边框表格上创建模糊玻璃效果?

如何在无边框表格上绘制平滑的模糊玻璃效果? 我已尝试使用C和GDI +页面在Image Processing for Dummies上列出的代码,但我确定这不是我应该使用的。 没有多少玩弄它已经产生了我所追求的任何结果。 这基本上就是我想要实现的目标:

CreateGraphics和Paint事件的Graphics对象有什么区别?

有人可以解释作为pevent.Graphics传递的Graphics对象与通过调用this.CreateGraphics()返回的对象之间的区别吗?