我正在使用C#在WPF中开发一个地图控件.我正在使用画布控件,例如400 x 200,其指定的地图区域为例如2,000mx 1,000m.
地图的比例为: canvas_size_in_meters/real_size_in_meters.
我想找到canvas_size_in_meters.
canvas.ActualWidth给出DIU的宽度(设备独立单位).因此,400 DIU是400/96 = 4,17英寸,提供我的显示器的物理分辨率是96 dpi.
但是,使用标尺,我发现我的显示器的物理分辨率是87 dpi.(实际上只有少数显示器具有96个物理dpi)
DPI差异(10%)转换为屏幕上实际地图控制宽度的+ 10%差异.
如何以英寸为单位测量WPF控件的大小,无论屏幕分辨率和DPI设置如何?
如何获取我的exe的启动路径(system.windows.forms.application.StartupPath)而不添加对system.windows.forms的引用?
我有一个我的对象类型的应用程序,它继承自包含应用程序对象的大多数属性的基类.所有对象类型都存储在数据库的一个表中."ClassType"列确定将SqlDataReader行转换为的对象类型.
这是我目前的实施:
SqlDataReader dr = SqlServerHelper.ExecuteReader("MyStoreProc", MySqlParmas);
if(dr.HasRows)
{
while(dr.Read())
{
switch(dr["ClassType"].ToString())
{
case "ClassA":
//cast sqldatareader a ClassA object
ClassA a = new ClassFactory.CreateClassA(object p1, object p2);
case "ClassB":
//cast sqldatareader a ClassB object
ClassB b = new ClassFactory.CreateClassB(object p1, object p2);
//it continues for all objects with app....
}
}
}
dr.Close()
Run Code Online (Sandbox Code Playgroud)
我的问题是他们对这种处理有更好的实现吗?
我需要使用Powershell将带有可选尾部符号的字符串转换为实际数字.
可能的字符串是:
我正在尝试使用带有NumberStyles的AllowTrailingSign的System.Int.TryParse,但我无法弄清楚如何使Powershell可以使用System.Globalization.NumberStyles.
我的应用程序是一个自定义格式的查看器,一个带有明确定义的XML清单和资源(如图像和电影)的zip文件.我使用zlib打开内存中的zip文件,然后继续显示所述资源.
我遇到的一个问题是我无法正确显示视频,显然是因为QTMovie无法确定mime类型.从文件加载的电影([QTMovie movieWithFile])完美无缺.从内存中加载([QTMovie movieWithData])拒绝工作.
这是有道理的,因为缺少文件扩展名,QTMovie无法确定mime类型信息.经过一番搜索后,我在下面的mannner中使用了QTDataReference:
NSData *movieData = ...read from memory...;
QTDataReference *movieDataReference = [[QTDataReference alloc] initWithReferenceToData:movieData name:fileName MIMEType:@"video/x-m4v"];
QTMovie *mov = [QTMovie movieWithDataReference:movieDataReference error:&err];
Run Code Online (Sandbox Code Playgroud)
这很好用,但硬编码MIMEType远非理想.我可以访问文件名和扩展名,所以我试图使用UTI找到mime-type(感谢#macdev上的好朋友):
- (NSString*)mimeTypeForExtension:(NSString*)ext {
CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,(CFStringRef)ext,NULL);
return NSMakeCollectable(UTTypeCopyPreferredTagWithClass((CFStringRef)UTI,kUTTagClassMIMEType));
}
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用.显然,在某个地方有一个扩展的内部OS X数据库和相应的mime类型.否则,磁盘电影将无法正常工作.我如何获得它?
谢谢!
我已经看到许多应用程序采用仪器类,并-javaagent在加载时将其作为参数放入-noverify命令行.
Java doc说,-noverify关闭了类验证.
然而,为什么有人想要关闭验证,即使他们正在检测课程?
你会怎么用套装!在一个简单的过程中,如果从左到右计算+的参数,如果从右到左计算参数,则评估(+(f 0)(f 1))将返回0?
我知道我可以遍历字符串或构建正则表达式或反转集合(毕竟ASCII不是那么大)并搜索第一个实例,但是Yuck.
我正在寻找的是一个漂亮的衬垫.
更少的功能更好,LINQ出局了(对我来说,不要问,这是一个长篇故事)
我要去的解决方案(除非我看到更好的东西)
static int FirstNotMeta(int i, string str)
{
for(; i < str.Length; i++)
switch(str[i])
{
case '\\':
case '/':
case '.':
continue;
default:
return i;
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
好吧,我作弊,我事先知道我关心的是什么char.
我想在C++中将一些东西插入到STL列表中,但我只有一个反向迭代器.通常的方法是什么?
这有效:(当然可以)
std::list<int> l;
std::list<int>::iterator forward = l.begin();
l.insert(forward, 5);
Run Code Online (Sandbox Code Playgroud)
这不起作用:(我该怎么办?)
std::list<int> l;
std::list<int>::reverse_iterator reverse = l.rbegin();
l.insert(reverse, 10);
Run Code Online (Sandbox Code Playgroud) 如何启动应用程序并通过stdout和stderr捕获输出?
我正在编写一个自动构建系统,我需要捕获输出以进行分析.我想更新svn repo并获取修订号,这样我就可以在autobuild/revNumber /中移动文件,如果成功的话.我还想使用make构建并将编译文本上传到我的服务器,以便每个人都能看到失败构建的警告和错误.
我找不到该system()功能,但我CreateProcess()在MSDN上找到了该功能.我能够启动我需要但我不知道如何捕获stderr和stdout.我注意到该过程是单独启动的,除非我设置断点并保持我的应用程序退出,然后它将保留我的应用程序控制台窗口中的所有文本.我还想等到所有进程完成后再扫描它生成的数据,以执行我需要的任何其他操作.我该怎么做?