如何从鼠标坐标获得像素的正确位置?
我使用e.GetPosition获得鼠标坐标.当它接近0时,它返回正确的坐标,但是,我从图像的右上方单击越多,它得出的不准确. 我希望能够单击像素并更改其颜色.但是现在它更改了另一个像素,而不是我单击的一个像素(在0,0). private void image_MouseDown(object sender, MouseButtonEventArgs e) { // coordinates are now available in p.X and p.Y var p = e.GetPosition(image); System.Drawing.Color red = System.Drawing.Color.FromArgb(255, 0, 0); //converting to bitmap MemoryStream outStream = new MemoryStream();
30 2024-04-25
编程技术问答社区
如何防止UIImage.FromImage(context.ToImage())出现内存泄漏?
i具有以下功能,可以将像素的字节阵列转换为图像.但是,我的内存泄漏: unwakeDimage = uiimage.fromimage(context.toimage()); 当我评论上面的线路时,泄漏就会消失.泄漏是如此糟糕,以至于iOS在启动大约30秒内杀死了我的应用程序.这是因为这条代码. 如何防止此内存泄漏?有更好的方法可以做我想做的事吗? public static void DrawCustomImage2(IntPtr buffer, int width, int height, int bytesPerRow, CGColorSpace colSpace, byte[] rawPixels, ref UIImage unpackedImage) { GCHandle pinnedArray = GCHandle.Alloc(rawPixels, GCHandleType.Pinned); IntPtr
28 2024-04-25
编程技术问答社区
从BMP或SVG中获取顶点/边 (C#)
我有一个JPG,BMP或SVG图像(请参见下面的示例),并且我需要一个算法来提取顶点(x,y)坐标和EGDES(即,指示连接哪个顶点的列表).边缘可以是每个顶点对的布尔元素的形式,也可以是连接的顶点对的列表.欢迎任何想法. 例如,我想要一个输入图像并输出两个列表的函数(或一系列函数): 顶点: 顶点1:x = 1,y = 2 顶点2:x = 3,y = 5 顶点3:x = 3,y = 7 ... 边缘: 边缘1 :(顶点1,顶点3) 边缘2 :(顶点1,顶点4) 边缘3 :(顶点4,顶点10) ... 顶点坐标系可以在任何坐标系中(例如,基于SVG坐标的像素),也可以是一些替代用户定义的坐标系统. 例如,我从示例图像(左)中提取以下坐标(像素),然后在matlab(右)中绘制它们. 所以,例如,我可以说角顶点大致: (10,10),(290,10),(290,190)和(10,190). 但我希望一
20 2024-04-24
编程技术问答社区
试图匹配像素颜色,然后点击[C#]。
我需要帮助我的程序将"存储"颜色与当前位置中的颜色匹配,然后单击鼠标,如果是相同的.到目前为止,我的代码中抓取颜色的效果很好,只是不确定如何匹配颜色和点等. 循环的启动/停止按钮也很不错. 到目前为止我的代码: using System; using System.Drawing; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Windows.Forms; namespace Pixel_detection_test_3 { public partial class PixelDetectionForm : Form { private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002; private const UInt32 MOUSEEVENTF_LEFTUP =
26 2024-04-24
编程技术问答社区
如何将整数数组分解为字节数组(像素编码)。
嗨,您很抱歉通过重新提出我的问题而感到烦恼,但我只是在发现我的答案. i有一个由RGB值组成的int,我需要将int数组分解为字节数组,但应按BGR顺序为单位. 由RGB值组成的INT数组就像So一样: pix[index++] = (255
16 2024-04-24
编程技术问答社区
是否可以从深度位图中只提取玩家的深度像素?
我也是Kinect开发的新手,也是新手stackoverflow! 这是我的情况: 有一个深度相机,我可以轻松获取深度数据.我要做的是一旦我发现摄像机的前面存在一个人(播放器), 我只会提取玩家的深度像素,然后将其放在透明的背景上,以便输出仅是透明背景上播放器深度图像的静态图像. 我想问 是否可以完成工作 ?我已经进行了一些研究并找到一些功能可能有助于这样做,例如skeletontodepthimage()或深度像素数据(其中包括距离和播放器索引). 解决方案 我假设您的意思是您想根据深度数据渲染玩家的轮廓,仅显示其轮廓.这是正确的吗? for Windows Develops Developer Toolkit kinect for Windows Developer Toolkit 完全做到这一点的示例. "绿色屏幕"示例向您展示了如何提取深度数据并将其映射到颜色流,以在选择背景中仅显示播放器. "基本互动"示例具有一个剪影示例,它准确地完成了我的解释.
14 2024-04-23
编程技术问答社区
我可以在VB.NET中使用带有不安全代码的C# dll吗?
有一个用于C#的FastBitMap类,它使您可以在AM BITMAP中进行访问和修改像素信息.我已经在某些C#项目中使用了它,但是现在在VB.NET中需要它. 问题在于类使用不安全的代码,而VB.net中不支持. 问题是.我可以在DLL中编译FastBitMap类并在vb.net中使用它吗? [编辑] 还是可以使用一些库中的库中的像素数据? 解决方案 是的,您可以做到. 该类未在其公共接口中公开任何不安全的功能(例如,方法采用指针),则使用vb.net中使用它不应遇到任何问题.通用语言运行时(CLR)支持不安全的代码,因此C#在编写不安全程序时不做任何魔术. 如果需要,也可以使用其他解决方案 快速答案,是.顺便说一句,您尝试过吗?
14 2024-04-23
编程技术问答社区
从二进制数据创建位图
我有以下内容: byte[] pixels = new byte[28] { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00 }; 这是这样的颠倒感叹号: 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00 二进制中的哪个是: 00000000 00000000 00110000 000000
18 2024-04-22
编程技术问答社区
点击图片框时获得PixelValue
我正在从事.NET C#项目,并且想在我单击Picture框时获得像素值,该如何实现? 基本想法是,当我单击图片框中的任何位置时,我会得到该图像点的pixelValue .. 谢谢! 解决方案 使用此: private void pictureBox2_MouseUp(object sender, MouseEventArgs e) { Bitmap b = new Bitmap(pictureBox1.Image); Color color = b.GetPixel(e.X, e.Y); } 其他解决方案 @hans指出的Bitmap.GetPixel应该有效,除非您的SizeMode与PictureBoxSizeMode.Normal or PictureBoxSizeMode.AutoSize不同.为了使它一直在工作,让我们访问PictureBox的私人属性ImageRectangle. PropertyInfo imageRe
16 2024-04-20
编程技术问答社区
如何找到Black Pixel的位置
我正在从事一个奇怪的项目.我可以使用用来制作模具(来自金属)的激光切割器.我可以使用坐标对机器进行编程以切割特定图像,但是我想知道的是:我如何编写一个扫描的图像,该图像是黑色和白色的,并给我黑色的坐标.区域?我不介意它是否给每个像素,即使我只需要外线,我也可以做到这一点. 我已经搜索了一段时间,但是这个问题的单词很多,颜色和像素等结果很多,以至于我发现大量无关的信息.我想使用C ++或C#,但是我可以使用任何语言,包括脚本. 解决方案 如果我们假设扫描的图像是完美的白色且完美的黑色,则没有内在颜色,那么我们可以将图像作为RGB值的数组,而只需扫描0个值即可.如果值为0,则必须是黑色的吧?但是,图像可能不会是黑色的,所以您需要一些摆动的房间. 您所做的会看起来像这样: for(int i = 0; i
34 2024-04-20
编程技术问答社区
来自TransformedBitmap对象的'Stride'困境
我有一个2208 x 3000转换的对象,带有格式{indexed8},我要做.copypixels()on.我正在使用 (int)((formattedBitmap.PixelWidth * formattedBitmap.Format.BitsPerPixel + 7) / 8) (假设" formattedBitMap"是我要从中试图复制像素的图像的名称)在我的方法调用中的'prinide'值和一个长度为2208的字节中的"步幅"值.我有类似的东西在代码中的其他位置(其中图像的格式为{gray8}.但是,我试图在上述图像上执行同样的事情,我不断地获得了"参数超出范围"例外说"参数值不能小于'6624000'.\ r \ n参数名称:buffer." 我对此的问题是:为什么在世界上,完全相同的代码似乎在一个地方而不是另一个地方起作用?从外行的角度来看,世界上的"大步"是什么?我如何在不遇到此错误的情况下获得(复制位)所需的影响?我在做什么错? 对此的任何帮助将不
30 2024-04-19
编程技术问答社区
PictureBox不能正常刷新?
如果我问一个愚蠢的问题,我是对赦免我的新手. 我正在尝试显示我从现场相机获得的实时图像.当我启动程序时,图片框能够显示对象(请参阅Picture1).当我删除对象时,它显示此图像(请参阅图2).但是问题在于,当我放回对象时,我应该能够获得与Picture1相似的图像,但看起来像Picture2. 是因为图片框无法正确刷新吗? //R Mode Tab private void RModeToolStripMenuItem_Click(object sender, EventArgs e) { // There is a method, which will obtain the data value and pass to this drawpix drawPix(x, y, (int)data, (int)data, (int)data); pictureBox.Refresh();
8 2024-04-17
编程技术问答社区
如何获得WinRT应用程序中字体的大小(以像素为单位)?
标题为.NET 4.5中,我们有一个字体类,可以为您提供像素的高度,但是Winrt中的字体呢? 我可以使用任何API来获取它使用的像素吗? 解决方案 由于Windows Store应用程序中的.NET API中甚至都不存在我的解决方法,我的解决方法是使用文本块: TextBlock dummyTextBlock = new TextBlock(); dummyTextBlock.FontFamily = new FontFamily("Tahoma"); dummyTextBlock.FontSize = 18; dummyTextBlock.FontStyle = FontStyle.Normal; dummyTextBlock.FontWeight = FontWeights.Bold; dummyTextBlock.Text = "X"; dummyTextBlock.Measure(new Size(0,0)); dummyTextBlock.Arrange(
24 2024-04-17
编程技术问答社区
C#中的每像素碰撞问题
出于我自己的目的,我在C#中编写了一个小型的2D游戏引擎,除了精灵碰撞检测外,它的工作正常.我决定将其作为每个像素检测(对我来说最容易实现),但它无法按照应有的方式进行操作.该代码在发生碰撞之前检测到.我已经检查了检测的每个组件,但是找不到问题. 碰撞检测方法: public static bool CheckForCollision(Sprite s1, Sprite s2, bool perpixel) { if(!perpixel) { return s1.CollisionBox.IntersectsWith(s2.CollisionBox); } else { Rectangle rect; Image img1 = GraphicsHandler.ResizeImage(GraphicsHandler.RotateImagePoint(s1.Image, s1.Position, s1.Ori
32 2024-04-17
编程技术问答社区
在C#中把一个像素数组转换为一个图像
我的C#程序中有一个int像素的数组,我想将其转换为图像.问题是我正在将程序的Java源代码转换为同等的C#代码.在Java中,线读取将INT像素数组显示为图像: Image output = createImage(new MemoryImageSource(width, height, orig, 0, width)); 有人可以告诉我C#等效吗? 这是int像素的数组.我搜索了位图类,并且有一种称为SetPixel的方法,但问题是需要x,y坐标号.但是我在代码中拥有的是int像素的数组.另一个很奇怪的是,我的原始数组的数量为负数,并且距离255. P> ,但我无法将那条线翻译成C#.请帮助. 解决方案 使用WPF,您可以直接从数组中创建一个位图(图像).然后,您可以对此图像进行编码或显示或与之播放: int width = 200; int height = 200; // // Here is the pixel format of your d
16 2024-04-16
编程技术问答社区
C#-转换8位或16位灰阶原始像素数据
我需要能够将8位或16位灰度像素数据转换为.NET框架可以支持的文件格式. 我可用的数据是宽度,高度,方向(左下)和像素格式为4096个灰色(12位分辨率),每个像素为2个字节. 因此,例如,每个像素范围从0到4096,每个像素为2个字节. 我已经尝试使用pixelformat.format16bppgrayscale与位图构造函数,并且会引发GDI+异常.我读过的所有内容都说明这种格式不支持,MSDN是错误的. 我想将此像素缓冲区转换为.net位图格式(例如格式化32bppargb),并具有尽可能少的图像质量丢失. 有人知道如何吗? 解决方案 请参见下面的示例,该示例预先计算查找表(LUT),并使用它来转换每个像素.此版本涵盖了您的12位案例;对于8位,代码非常相似,但是很难跨像素格式概括. 从12位GS转换为有效的8位GS将丢失数据.但是,您可以调整LUT表以专注于具有更好对比度的较小的输入值范围(例如=" noreferrer"> diC
20 2024-04-16
编程技术问答社区
获取图像中每种颜色的使用百分比
我有这个工作,但是在JPEG图像上它是如此缓慢,还需要更改. 我需要了解图像中的单个颜色(RGB的+/- 1)和该颜色的图像的%. 所以,如果图像是黑色和白色的,它会说类似 怀特:74% 黑色:26% 下面的代码正如我说的那样工作,但我还需要添加一个公差系统,我不知道如何做. private Dictionary getPixelData(Bitmap image) { Dictionary pixelData = new Dictionary(); //int col, row; //int r, g, b; Color pixel; double offset = 0.000001; int hmm = (image.Height * image.Width); double current = 0;
14 2024-04-15
编程技术问答社区
如何将WPF英寸单位转换为Winforms像素,反之亦然?
我有一个窗口,该窗口在 wpf ,然后我在 wpf 窗口也必须在表单的中央移动! 但是我有一个问题,只有当窗口位于屏幕中央形式的形式的中心时.否则以与Windows坐标不同的形式行动. 我只是将表单的位移值添加到窗口位置. 现在,我得出的结论是,wpf Windows上像素的坐标是Winforms不同的! 如何转换 wpf 位置到 winorforms versa? 所有者表格代码是: public partial class Form1 : Form { private WPF_Window.WPF win; public Form1() { InitializeComponent(); win = new WPF(); win.Show(); CenterToParent(win); } private void CenterToParent(S
22 2024-04-15
编程技术问答社区
线条栅格化。覆盖所有像素,不考虑线的梯度?
基本上,我想使用一条算法来确定我的射线卡斯特碰撞的单元格. bresenham 对此并不是很好,因为它使用了统一的厚实方法,这意味着它忽略了至少一半覆盖线的单元.一点都不好,因为这意味着我的行的某些片段没有被检查是否与细胞相交,导致错误. 我似乎找不到任何"厚线"算法,有人可以帮我找到一个吗? 绿色:我想要的. 红色:我目前和不想要的东西. 解决方案 我的问题与您完全相同,并找到了一个非常简单的解决方案.通常,Bresenham有两个连续的IF确定是否应增加两个维度的坐标: public void drawLine(int x0, int y0, int x1, int y1, char ch) { int dx = Math.abs(x1 - x0), sx = x0
12 2024-04-14
编程技术问答社区
如何在给定的字体/大小中测量一个数字的像素宽度(C#)。
我正在尝试计算Excel列的像素宽度,如使用OpenXML规范的官方公式.但是,为了应用此公式,我需要知道最大数字宽度 normal 字体,这是最宽的数字数字的像素宽度. OpenXML规范将此示例作为澄清: 以钙纤维字体为例,最大数字宽度为11点字体 尺寸为7像素(在96 dpi). 我已经检查了这是正确的,可以通过视觉检查钙纤维11点数字,并且确实是7像素宽.因此,我正在尝试创建一种方法,该方法将返回任何字体/大小的最大数字宽度. 我遵循了 a>,但它不会产生我期望的结果. 这是我的测试代码: var font = new Font("Calibri", 11.0f, FontStyle.Regular); for (var i = 0; i
20 2024-04-13
编程技术问答社区