Tag: graphics

GDI +曲线“溢出”

我目前正在使用GDI +绘制折线图,​​并使用Graphics.DrawCurve来平滑线条。 问题是曲线并不总是与我提供的点匹配,这使曲线在某些点上长出图形框架,如下所示(红色是Graphics.DrawLines ,绿色是Graphics.DrawCurve )。 我该如何解决这个问题?

VBO在C#中使用交错顶点

我正在尝试使用VBO使用OpenTK在C#中绘制我的模型。 在我的在线研究中,我在许多地方读过,优先考虑使交错数据结构的大小为32字节的精确倍数,因此我编写了以下代码: [Serializable] [StructLayout(LayoutKind.Sequential)] public struct Byte4 { public byte R, G, B, A; public Byte4(byte[] input) { R = input[0]; G = input[1]; B = input[2]; A = input[3]; } public uint ToUInt32() { byte[] temp = new byte[] { this.R, this.G, this.B, this.A }; return BitConverter.ToUInt32(temp, 0); } } [Serializable] [StructLayout(LayoutKind.Sequential)] public struct […]

myBitmap.RawFormat与任何已知的ImageFormat有什么不同?

我正在使用GDI +,我创建了一个像这样的新位图: var bmp = new Bitmap(width, height); 现在当我观察它的RawFormat.Guid时,我发现它与所有预定义的ImageFormats不同(我希望它是JPEG)。 ImageFormat.Jpeg.Guid {b96b3cae-0728-11d3-9d7b-0000f81ef32e} format.Guid {b96b3caa-0728-11d3-9d7b-0000f81ef32e} 有趣的是,你可以看到它们是相同的,除了一个让我更加困惑的角色。 知道为什么吗? 哪些代码部分决定了我创建的位图的RawFormat是什么? 我们如何确保它是一个有效的ImageFormat? 谢谢。

C#:创建图形屏幕保护程序

我正在考虑创建一个屏幕保护程序。 我有完整的东西,它的图形和后端类型已经准备好了。 但我不太确定如何在代码中获取图形。 我想要的是带有一点运动的图像的幻灯片放映(有点像媒体中心的幻灯片放映)以及顶部的一些浮动文本和形状。 形状有些半透明。 我目前在WinForms中制作了一个非常简单的静态幻灯片。 只是一个简单的应用程序,全屏显示一些图像,并假装以一种hackish方式淡入淡出。 但它制作得不是很好,性能也不是很好。 例如,为了防止延迟,我在图像顶部淡入黑色方块,而不是在实际图像中淡入淡出。 也许愚蠢,但它有点工作:p 无论如何,我想做得更好。 但不知道从哪里开始。 WPF是一个很好的解决方案吗? 或者我应该研究DirectX或OpenGL? 这是可以用XNA很好地处理的东西,还是那个游戏太棒了?

如何使用MouseMove事件绘制单行

我正在尝试使用OnMouseMove()事件绘制一行。 我的问题是每次我移动鼠标都会留下痕迹。 我尝试使用刷新方法,但是当我停止移动鼠标时,线条消失了。 我不想要绘制OnPaint(); ,只想绘制它OnMouseMove() 。 编辑:我正在使用透明面板(cp.ExStyle | = 0x20;),所以我不能使用graphics.Clear()和BackColor() 这是没有Refresh()的示例图像: 这是我的代码: private void panel1_MouseMove(object sender, MouseEventArgs e) { Graphics g = panel1.CreateGraphics(); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; using (var p = new Pen(Color.Black, 3)) { p.StartCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; g.DrawLine(p, st, e.Location); } Thread.Sleep(30); Invalidate(); //this.Refresh(); g.Dispose(); } 问候

将后渲染效果应用于XNA中的SpriteBatch

在XNA框架中,有没有办法使用典型的SpriteBatch方法渲染2D场景,然后在渲染帧后,将效果应用于整个图像? 例如,模糊,棕褐色甚至使整个事物看起来像旧时的电影胶片,有颗粒,灰尘,线条等?

如何绘制不断变化的图形

之前没有这样做过( 除了在java中 ,看看Steve McLeod是如何修复它的),所以显然我很沮丧。 这里,当前鼠标位置周围的64个像素在表格上绘制得更大。 问题是,它有点’缓慢’,我不知道从哪里开始修复。 除此之外,我制作了一个计时器线程,它在完成后不断调用更新图形,并且像文本一样点fps,以显示绘制事物的速度。 图像示例:(图像来自Microsoft VS2010中“IntelliTrace”中的字母’a’) 来源示例: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace Zoom { public partial class Form1 : Form { static class dllRef { [DllImport(“user32.dll”)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool GetCursorPos(out Point lpPoint); [DllImport(“user32.dll”)] static extern IntPtr […]

图形DrawString将文本正确放置在System.Label上

我在VS2008中重写了我的Label控件的OnPaint方法: void Label_OnPaint(object sender, PaintEventArgs e) { base.OnPaint(e); dim lbl = sender as Label; if (lbl != null) { string Text = lbl.Text; e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; if (myShowShadow) { // draw the shadow first! e.Graphics.DrawString(Text, lbl.Font, new SolidBrush(myShadowColor), myShadowOffset, StringFormat.GenericDefault); } e.Graphics.DrawString(Text, lbl.Font, new SolidBrush(lbl.ForeColor), 0, 0, StringFormat.GenericDefault); } } 这是有效的,但我真的想知道如何垂直和水平居中文本。 我听说过MeasureString()方法,但我的“文本”使问题变得复杂,因为它可能包含分页符。 有人可以指导我如何做到这一点?

C#中的PNG图像问题

在Visual Studio 2008中工作。我正在尝试绘制PNG图像并再次保存该图像。 我做了以下事情: private Image img = Image.FromFile(“file.png”); private Graphics newGraphics; 在构造函数中: newGraphics = Graphics.FromImage(img); 构建解决方案不会产生错误。 当我尝试运行它时,我得到了这个: 无法从具有索引像素格式的图像创建Graphics对象。 我在C#中使用图像的经验不多。 这是什么意思,我该如何解决这个问题? 编辑:通过调试,Visual Studio告诉我该图像具有format8bppindexed Pixel Format。 所以如果我不能使用Graphics类,我该怎么用? EDIT2:读完之后,我认为可以安全地假设我在使用GDI +时更好地坚持使用JPG文件,不是吗? EDIT3:我的使用陈述: using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;

C#中的密集图形应用程序(使用.NET / Mono)

如果你在C#中编写一个2d图形密集型应用程序(如动画软件或带有自动图形控件的音序器),哪一个是图形库的更好选择? 我想开发一个跨平台的应用程序(至少在Windows 7,Linux上是可移植的),我只想使用C#,避免在C ++中混合代码(由于互操作问题)。 我已经尝试过OpenTK了,但它缺少文档,而且它似乎不是很稳定(使用Mono它会让我有时会崩溃X服务器!!!)……也许我错了,但是我觉得它不是一个长期支持的库,它会死… .NET / Mono有一个好的和稳定的 OpenGL包装器吗? 我知道在Mono(Moonlight)上有一个Silverlight的移植,但我读到它的性能很差。 谢谢。