是否有关于如何以十六进制格式表示颜色(包括alpha通道)的W3或任何其他值得注意的标准?
是#RGBA还是#ARGB?
我正在研究THREE.js并注意到一个模式,其中函数的定义如下:
var foo = ( function () {
var bar = new Bar();
return function ( ) {
//actual logic using bar from above.
//return result;
};
}());
Run Code Online (Sandbox Code Playgroud)
(示例请参见此处的 raycast方法).
这种方法的正常变化如下所示:
var foo = function () {
var bar = new Bar();
//actual logic.
//return result;
};
Run Code Online (Sandbox Code Playgroud)
将第一个版本与正常变体进行比较,第一个版本似乎有不同之处:
因此,主要区别在于,在第一个变体中,条形图在初始化时仅分配一次,而第二个变体在每次调用时都创建此临时变量.
我最好猜测为什么使用它是为了限制bar的实例数(只有一个),从而节省了内存管理开销.
我的问题:
如果我想要一个返回给定类型的默认值的方法,并且该方法是通用的,我可以返回一个默认值,如下所示:
public static T GetDefaultValue()
{
return default(T);
}
Run Code Online (Sandbox Code Playgroud)
如果我只将类型作为System.Type对象,我可以做类似的事情吗?
public static object GetDefaultValue(Type type)
{
//???
}
Run Code Online (Sandbox Code Playgroud) 如果您运行的是具有更高DPI设置的Windows,您会注意到桌面上的大多数应用程序图标看起来都很糟糕.甚至一些高调的应用程序图标(如Google Chrome)看起来也很糟糕,而Firefox,Skype和MS Office图标看起来很清晰:
(例)
我怀疑大多数图标看起来都很模糊,因为较低分辨率的图标会按比例放大而不是使用更高分辨率的图标.
我想给我的应用程序一个高质量的图标,似乎无法说服Windows使用更高分辨率的图标.我用图标编辑器IcoFX创建了一个多分辨率图标.该图标以16x16,24x24,32x32,48x48,128x128和256x256(!)提供(全部为32位,包括alpha通道),但Windows似乎使用桌面上48x48版本的图标并将其放大,看起来很糟糕.(我使用的是Windows 7 - 64位 - 通过在msi中设置快捷方式(通过Visual Studio 2008安装项目创建)并将其指向包含多分辨率图标的.ico文件来放置图标)
我试过删除128x128图标,但无济于事.有趣的是,在Windows资源管理器中,即使使用"超大图标"设置,图标看起来也很棒.如何创建高质量的桌面图标,在Windows上更高的DPI设置上看起来很棒?
编辑:我测试删除128x128选项,然后是48x48和128x128选项,并尝试Axialis IconWorkshop创建图标 - 没有任何工作.
编辑:经过多次试验和错误我认为这里的真正问题是Visual Studio 2008安装项目 - 手动设置我的可执行文件的链接正确使用高分辨率图标,但是安装程序创建的链接不使用正确的图标.在编辑器中设置链接的图标时,它只给我一个选项(索引0),它似乎是48x48图标.我试过手动调整.vdproj中的IconIndex,但没有运气.
什么是判断字符串是否包含"从右到左"语言的文本的好方法.
我发现这个问题表明了以下方法:
public bool IsArabic(string strCompare)
{
char[] chars = strCompare.ToCharArray();
foreach (char ch in chars)
if (ch >= '\u0627' && ch <= '\u0649') return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
虽然这可能适用于阿拉伯语,但这似乎不包括其他RTL语言,如希伯来语.有没有通用的方法来知道某个特定字符属于RTL语言?
我不明白为什么DPI参数的RenderTargetBitmap使用方式与它们的使用方式相同.通常我会通过调整基于DPI的图像大小来查看处理非标准DPI设置的代码,如下所示:
new RenderTargetBitmap ((int) (width/96d)*dpi, (int) (height/96d)*dpi, dpi, dpi, PixelFormats.Pbgra32);
Run Code Online (Sandbox Code Playgroud)
例子:
http://blogs.msdn.com/b/jaimer/archive/2009/07/03/rendertargetbitmap-tips.aspx
ContentControl + RenderTargetBitmap +空图像
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/984da366-33d3-4fd3-b4bd-4782971785f8/
其他时候,dpi似乎被硬编码为96或不同的值,如下所示:
new RenderTargetBitmap (width, height, 96, 96, PixelFormats.Pbgra32);
Run Code Online (Sandbox Code Playgroud)
例子:
http://www.ericsink.com/wpf3d/3_Bitmap.html
http://dedjo.blogspot.com/2008/05/performance-appliance-of.html
如何将已检查的CheckBox(Aero主题)渲染为RenderTargetBitmap?
要么
new RenderTargetBitmap (width, height, 120, 96, PixelFormats.Pbgra32);
Run Code Online (Sandbox Code Playgroud)
例子:
http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap.aspx
你什么时候做一个又一个?
如果您以后想要显示与应用程序内部控件大小相同的图像,我是否应该总是调整位图的大小(如第一个示例中所示)?
并且你可能应该在96保存到文件时使用固定dpi,或者如果你使用不同的dpi而不调整宽度和高度?
假设我想将控件的图像保存到具有固定大小的文件.我还能设置dpi还是只使用默认的96?
我System.OutOfMemoryException在尝试生成6个字母的排列时得到了.5个字母的排列仍然有效.
这是我用来生成所有排列的代码:
private static List<string> getPermutations(int n,string source)
{
IEnumerable<string> q = source.Select(x => x.ToString());
for (int i = 0; i < n - 1; i++)
{
q = q.SelectMany(x => source, (x, y) => x + y);
}
return q.ToList(); // THIS IS WHERE THE ERROR HAPPENS
}
Run Code Online (Sandbox Code Playgroud)
之后我使用这段代码根据正则表达式过滤它们:
private static List<string> filterListByRegex(List<string> list, string regex)
{
List<string> newList = list.ToList();
for (int i = newList.Count - 1; i >= 0; i--)
{
Match match = Regex.Match(""+newList[i], …Run Code Online (Sandbox Code Playgroud) 我正在为一个包含多个文本元素和图像的html应用程序设计一个可点击的面板.
根据我的理解,这通常用div来完成.像这样的东西:
<div class="myButton">
<h2>Text</h2>
<h3>Some more text</h3>
<img ...>
</div>
Run Code Online (Sandbox Code Playgroud)
通过一些样式和挂钩点击事件,这工作正常,但我有样式活动状态的问题:
.myButton {
cursor:pointer;
}
.myButton:active{
-ms-transition-duration: 0.2s;
-ms-transform: scale(0.95);
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我正在尝试做一个css动画(仅限IE),但这可能真的是什么.问题是活动状态仅在我单击div时有效,但在单击div的任何子项时不起作用.
这是一个JS小提琴来展示场景:
更新:感谢David Thomas指出代码中的拼写错误并确认这在Chrome中有效.
不幸的是,在IE10中,只有当您单击div的下半部分时,才能使用此文本.
有谁知道如何在IE10中正常工作?
你可以使用UTF-8字符串作为StartInfo的参数吗?
我试图将UTF-8(在本例中为日语字符串)作为控制台参数传递给应用程序.
这样的事情(这只是一个例子!(cmd.exe将是一个自定义应用程序))
var process = new System.Diagnostics.Process();
process.StartInfo.Arguments = "/K \"echo ????????\"";
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = true;
process.Start();
process.WaitForExit();
Run Code Online (Sandbox Code Playgroud)
执行此操作似乎松开了UTF-8字符串,所有目标应用程序看到的都是"echo ?????????"
直接在命令行上执行此命令(通过粘贴参数),目标应用程序正确接收字符串,即使命令行本身似乎没有正确显示它.
我是否需要做一些特殊的事情才能在参数中启用UTF-8支持,或者这是不支持的?