正如我在这里发布的,我能够在我的WindowsForm上显示一些特殊字体,但我无法将此字体保存为图片.问题Graphic.DrawString()是无法显示所有或特殊字体.WindowsForm正在使用TextRenderer它的更新(添加2.0),这就是WindowsForm能够显示这些字体的原因.
精细.现在我坐在这里尝试做同样的事情TextRenderer.DrawText()- 我不得不说我的输出图像现在好多了,但仍然不同于WindowsForm.让我们看看我的代码:
Bitmap Bit = new Bitmap(500, 200);
Graphics g = Graphics.FromImage(Bit);
string s = "TEST";
g.Clear(Color.White);
TextRenderer.DrawText(g, s, new Font("Code 128", 72), new Point(20, 20), Color.Black, Color.White);
Bit.Save(@"C:\myFolder\test.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
Bit.Dispose();
Run Code Online (Sandbox Code Playgroud)
(代码128是一种特殊字体,如果您真的想了解更多信息,请点击以下链接获取更多信息)
所以这是有效的,我得到了我的形象,很好.现在我在WindowsForm上的标签上添加相同字体和相同字体的相同字符串.而且有一些不同.不同之处在于,创建的图像TextRenderer在第一个位置始终具有不同的字符.其他一切都很好!我不懂.让我们来看看WinForm VS Image:

我们可以看到第一个"字符"(如果我们可以说这个例子中的'字符')在某种程度上是不一样的.现在让我将TextRenderer Image函数中的字符串更改为"TTEST".将WinForm上的"TEST"与TextRenderer上的"TTEST"进行比较:

看起来很有趣吗?所以,TextRenderer.DrawText()+ special font = first char很奇怪.但为什么?以及如何解决这个问题?有什么建议?谢谢!
编辑:如果有帮助我可以发布WindowsForm的代码
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary> …Run Code Online (Sandbox Code Playgroud) 我正在使用ReadAllText读取文件
String[] values = File.ReadAllText(@"c:\\c\\file.txt").Split(';');
int i = 0;
foreach (String s in values)
{
System.Console.WriteLine("output: {0} {1} ", i, s);
i++;
}
Run Code Online (Sandbox Code Playgroud)
如果我试着读一些文件,我有时会得到错误的字符(对于ÖÜÄ......).输出就像'?',因为编码存在一些问题:
output: 0 TEST
output: 1 A??O?
Run Code Online (Sandbox Code Playgroud)
一种解决方案是在ReadAllText中设置编码,让我们说这样ReadAllText(@"c:\\c\\file.txt", Encoding.UTF8)可以解决问题.但是,如果我仍然会得到'?' 作为输出?如果我不知道文件的编码怎么办?如果每个文件都有不同的编码怎么办?用c#做最好的方法是什么?谢谢
假设有一个.ttf(True Type Font)文件.您可以通过单击将其安装在Windows上.字体的真实名称不是.tff之前的文本(比如说SuperFont.ttf =>所以名称不是"SuperFont" - 它可能是,但大部分都不是).我想阅读.tff(不知何故?)并得到字体的名称(不安装字体).有任何想法吗?
Font f = new Font("Free 3 of 9", 80);
this.Font = f;
Label l = new Label();
l.Text = "*STACKOVERFLOW*";
l.Size = new System.Drawing.Size(800, 600);
this.Controls.Add(l);
this.Size = new Size(800, 600);
Run Code Online (Sandbox Code Playgroud)
它的工作.我看到条形码,我能够扫描它.现在我想使用其他东西,比如Code 128因为我需要安装Font(完成)并且只是改变
Font f = new Font("Free 3 of 9", 80); 至 Font f = new Font("Code 128", 80);
之后我在窗口看到条形码.问题是我无法扫描它.我认为那是因为我没有使用正确的开始和停止标签的条形码.据我所知,必须始终有一个开始/停止char或其他什么.对于Code 128的*中的3个我不确定.在维基上有开始代码A所以我试过
Font f = new Font("<Start Code A>test<Stop>", 80);,Font f = new Font("<Start Code …
我有一些麻烦要说明为什么我得到一个例外.我有这样的事情:
string path = "file.xls";
if (File.Exists(path))
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(path); //exception
//...
}
Run Code Online (Sandbox Code Playgroud)
例外:
Unhandled Exception: System.Runtime.InteropServices.COMException: 'file.xls' could not be found
Run Code Online (Sandbox Code Playgroud)
这就是为什么我要检查File.Exists,所以我没有得到这个例外.那么这File.Exists是如何工作的,是真的,但文件仍无法找到?如果我使用绝对路径,那么它正在工作.为什么?我想在没有绝对路径的情况下使用这个,有什么想法吗?谢谢
编辑:当然file.xls和我的文件夹在同一个文件夹中.exe- >这就是为什么(正如预期的那样)File.Exists返回true.只是想明确这一点;)
如何在表中的oracle sql中选择前x行,然后是下一个x,依此类推?我知道我可以使用TOP/LIMIT,然后我得到第一个x
select a from b limit 150 =>得到前150行.
编辑:为什么?我想将前150个输出复制到一个文件中,然后将下一个150复制到另一个文件中等等......
我看到了很多关于.NET和生成条形码的帖子和帖子.很多人都在谈论图书馆,dll和一些"开箱即用的应用程序".我只是问自己:我真的需要这些东西吗?我(此时)能够创建条形码而无需任何额外的库或其他东西.多数人使用Font很好.我只需要一个barcodefont,让我们可以像9中的3个一样免费,我可以安装它(实际上我甚至不必安装它,它足以拥有文件的路径)然后我会做这样的事情:
Font f = new Font("Free 3 of 9", 80);
this.Font = f;
Label l = new Label();
l.Text = "*STACKOVERFLOW*";
l.Size = new System.Drawing.Size(800, 600);
this.Controls.Add(l);
this.Size = new Size(800, 600);
Run Code Online (Sandbox Code Playgroud)
我可以显示条形码.你知道吗?我的手机能够读取它.这就是多么容易.我可以将其保存为jpg,我可以将其保存为xml文件,依此类推.如果我想要另一个条形码,我只需要新的字体,将9中的3个更改为其他内容即可.
所以我的问题是:我错过了什么?每个人都在谈论"呃使用已经完成的东西","使用图书馆"等等.那么如果我继续这个没有额外的库和其他东西我可以得到什么问题?有什么建议?谢谢
我有一些cmd.exe的问题,我有时用它来创建文件并在那里写输出.但如果我试试这个:
wmic logicaldisk get name, freespace >> output.txt
echo %date% >> output.txt
Run Code Online (Sandbox Code Playgroud)
我开始它2-3次,我得到一个output.txt像:
FreeSpace Name
17990881280 C:
D:
????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
那么这个中文文本看起来很有趣,但我希望看到日期.我想某种程度上编码随日期而改变.因为如果我单独回显%date%>> output.txt一切都很好,我得到了日期.我该怎么办,我想获得wmic输出和日期.有任何想法吗?谢谢
因为我知道一点点的Java,我试图在每一个Scala代码一些Java类型,如使用java.lang.Integer,java.lang.Character,java.lang.Boolean...等等.现在人们告诉我"不!对于Scala中的所有东西都有自己的类型,Java的东西会起作用 - 但你应该总是喜欢Scala类型和对象".
好的,我现在看到,Scala中有Java中的所有东西.不知道为什么最好使用例如Scala Boolean而不是Java Boolean,但很好.如果我看我看的类型scala.Boolean,scala.Int,scala.Byte...然后我看着字符串,但它不是scala.String,(以及它甚至没有java.lang.String 混淆),它只是一个字符串.但我想我应该使用直接来自scala的所有内容.也许我不正确理解scala,有人可以解释一下吗?
我开始使用VS2010和C#," { "很奇怪.如果我创建一个新项目或自动创建一个函数,它总是如下:
function()
{
//
}
Run Code Online (Sandbox Code Playgroud)
所以我必须多次编辑它.如何将其改为正常?正常对我来说:
function() {
//
}
Run Code Online (Sandbox Code Playgroud)
我知道那不重要,但我不喜欢它.我确定有办法改变它,是吗?谢谢
编辑:谢谢大家的快速回答.也许我想知道的另一件事 - 如果我改变{和创建一个大项目的规则.如果其他人也想在它上面工作(在他们自己的VS2010上),他们能以某种方式改变{恢复正常而没有任何问题或只是手动吗?编辑2:不,我认为这是不可能的.