给定一个表示为2d点数组的路径:
Point[] path = new Point[4]
{
new Point(0,0),
new Point(10,0),
new Point(10,10),
new Point(0,10),
};
Run Code Online (Sandbox Code Playgroud)
......这里是一个盒子.
将此转换为要在3D应用程序中使用的三角形列表(填充路径)的最佳方法是什么?鉴于这只是一个简单的例子,实际上道路可能相当复杂.框架中是否有任何东西,可能是System.Drawing或在WPF中有哪些可以帮助解决这个问题?
编辑:(在塞缪尔的评论之后)理想情况下,我希望能够处理凸多边形和凹多边形,否则图形必须手动上升许多凸多边形.
我有一个奇怪的问题 - 我有大约1450万个位图图像,据说是未压缩的.我需要将这些位图转换为JPG并将它们存储在数据库中.
当我使用.NET System.Drawing库中提供的类将位图保存为ImageFormat.Jpeg时,生成的JPEG 大小是原始位图大小的两倍.这是代码:
byte[] bitmapBytes = //get from the db
using(MemoryStream bitmapStream = new MemoryStream(bitmapBytes))
{
using(Bitmap bitmap = (Bitmap)Bitmap.FromStream(bitmapStream))
{
bitmap.Save("jpg.jpg", ImageFormat.Jpeg);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经查看了其中几个图像的HEX,看起来压缩设置是"无".所以我假设他们没有压缩.此外,原始文件的HEX具有"BMP"代码,结果文件具有您期望的"JFIF"代码.
图像是黑白的,没有颜色.
有关为什么会发生这种情况的任何想法?寻找正确方向的指针......
编辑:
图像属性:
所以,我有一个视频源的快照,我进入一个Image,为它抓取一个Graphics对象,然后在图像的右下角绘制一个时间戳.到目前为止没问题.但是,我不能保证文本后面会有什么颜色,所以不管我使用什么画笔,它几乎肯定会与它所绘制的一些图像发生冲突,使文本无法读取.
我想知道是否有人知道一种方式(在.net中的方法,或一个很好的算法),根据它背后的图像确定字符串的最佳颜色.
干杯
在我的UI类中,开发人员可以选择定义位置属性(System.Drawing.Point的类型).默认情况下,此属性初始化为Point.Empty.由类封装的内部代码使用Point属性的.IsEmpty来确定是否已设置位置.如果属性不为空,则将使用x/y值.如果为空,代码将尝试使用行/列algorythm放置它.
我的问题:
我正在使用属性的.IsEmpty来确定它是否已设置.令我惊讶的是,如果开发人员将该属性设置为0,则会显示为Empty.点0,0在图形中有效.我也理解为什么.IsEmpty为0,0值返回true.
1)没有创建我自己的类或从System.Drawing.Point继承,有没有办法知道属性是否已设置?
我能想到的唯一想法是使用值"new Point(-1,-1)"来默认属性并对其进行测试.有没有更好的办法?如果没有,请确认.
我在Visual Studio 2005和Visual Studio 2008中使用C#
谢谢!

我正在为员工生成 ICard。我必须在 ICard 上写下雇员的地址。
Image blankICard = Image.FromFile(@"C:\Users\admin\Pictures\filename.jpg");
Bitmap outputImage = new Bitmap(blankICard.Width, blankICard.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
System.Drawing.SolidBrush b = new SolidBrush(Color.FromArgb(255, 88, 89, 91));
using (Graphics graphics = Graphics.FromImage(outputImage))
{
graphics.DrawImage(blankICard, new Rectangle(0, 0, blankICard.Width, blankICard.Height),
new Rectangle(new Point(), blankICard.Size), GraphicsUnit.Pixel);
Font stringFont = new Font("FreightSans Medium", 20, FontStyle.Regular);
string address = "Address goes here";
graphics.DrawString(address, new Font("FreightSans Medium", 20, FontStyle.Regular), b, new Point(621, 234));
graphics.DrawString("Employee Code:12345678", new Font("FreightSans Medium", 26, FontStyle.Regular), b, new Point(350, 407));
}
Run Code Online (Sandbox Code Playgroud)
电流输出显示在图像的左侧。这是我的字符串开箱即用会发生什么。
我想把它装在固定尺寸的盒子里。
示例显示在图像的右侧。
我想学习使用Powershell创建/编辑图像.请帮助我创建位图图像,用一些颜色填充它,将某些像素的颜色设置为其他颜色并将图像保存到文件中.
编辑:我尝试了下面的代码,但得到了一个黑色的位图
[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$bmp = New-Object System.Drawing.Bitmap(320, 240)
for ($i = 0; $i -lt 100; $i++)
{
for ($j = 0; $j -lt 100; $j++)
{
$bmp.SetPixel($i, $j, 1000)
}
}
$bmp.Save("f:\Temp\bmp.bmp")
ii f:\Temp\bmp.bmp
Run Code Online (Sandbox Code Playgroud) 我已经可以将文件另存为.jpeg,但是图像无法加载,有人建议吗?
Private Sub Btnconfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnconfirm.Click
MsgBox("A receipt will now be saved to your files", vbOKOnly, "Thank you for your purchase")
SaveFileDialog1.ShowDialog()
MsgBox("Thank you for choosing Tiny Theatre, have a nice day.", vbOKOnly, "Thank you")
Me.Close()
End Sub
Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
Dim FileToSaveAs As String = SaveFileDialog1.FileName
Dim objwriter As New System.IO.StreamWriter(FileToSaveAs)
objwriter.Write(PictureBox1)
objwriter.Close()
End Sub
Run Code Online (Sandbox Code Playgroud) ImageList应创建插入其中的所有图像的副本.因此,在将原件添加到列表后处置原件应该是安全的.
为什么以下测试用例失败?
Bitmap test = new Bitmap(128, 128);
ImageList il = new ImageList();
il.Images.Add(test);
Assert.AreEqual(1, il.Images.Count); // OK, image has been inserted
test.Dispose(); // now let's dispose the original
try
{
var retrievalTest = il.Images[0];
}
catch (ArgumentException) // ... but this Exception happens!
{
}
Assert.AreEqual(1, il.Images.Count); // and this will fail
Run Code Online (Sandbox Code Playgroud)
这里似乎发生了这样的事情:当尝试检索图像时,ImageList发现原始文件已被处理,并将其从ImageList中删除.
为什么会发生这种情况,我认为ImageList应该创建一个图像副本?
我正在尝试为TextBox添加水印.TextBox.Background是一个System.Windows.Media.Brush.我需要Graphics.FillRectangle(System.Drawing.Brush ....)
有没有办法将mediea画笔转换为绘图画笔?
我认为这是一个简单的问题,但我无法弄明白.
//verifica qual o ponto mais proximo do centroide_circulo
PointF ponto_mais_proximo = pontos_medios.OrderBy(x => Math.Pow(x.X - centroide_circulo.X, 2) + Math.Pow(x.Y - centroide_circulo.Y, 2)).FirstOrDefault();
LineSegment2D linha_circulo_vertice = new LineSegment2D(centroide_circulo, ponto_mais_proximo);
Run Code Online (Sandbox Code Playgroud)
无法从'System.Drawing.PointF'转换为'System.Drawing.Point'
我的问题是如何转换它?第一行代码中的ponto_mais_proximo需要是PointF.
system.drawing ×10
c# ×7
.net ×5
bitmap ×1
drawstring ×1
image ×1
imagelist ×1
point ×1
powershell ×1
string ×1
vb.net ×1
winforms ×1