小编Sci*_*ter的帖子

如何使用Properties.Resources中的图像从WPF中的代码隐藏动态更改图像源?

我有一个WPF应用程序,需要向用户提供有关内部状态的反馈.设计是有三个图像,称为红色,黄色和绿色.其中一个图像将根据状态一次显示.以下是要点:

  • 这三个图像位于代码隐藏中的Properties.Resources中
  • 一次只能显示一个图像.
  • 状态更改来自代码隐藏中的进程,而不是来自用户.
  • 我想绑定一个图像控件,以便我可以从代码隐藏更改图像.

我假设我需要一个图像转换器来将JPG图像更改为图像源,例如:


[ValueConversion(typeof(System.Drawing.Bitmap), typeof(ImageSource))]
public class BitmapToImageSourceConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var bmp = value as System.Drawing.Bitmap;
        if (bmp == null)
            return null;
        return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                    bmp.GetHbitmap(),
                    IntPtr.Zero,
                    Int32Rect.Empty,
                    BitmapSizeOptions.FromEmptyOptions());
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢在初始化期间转换图像一次并保留图像源列表.我也假设我需要一个依赖属性来绑定控件,但我不知道如何使用这个图像源列表进行设置:


    // Dependancy Property for the North Image
    public static readonly DependencyProperty NorthImagePathProperty
        = DependencyProperty.Register(
            "NorthImagePath",
            typeof(ImageSource),
            typeof(MainWindow),
            new PropertyMetadata("**Don't …
Run Code Online (Sandbox Code Playgroud)

wpf imagesource

8
推荐指数
1
解决办法
6万
查看次数

8
推荐指数
1
解决办法
364
查看次数

为什么'g'标志会改变JavaScript正则表达式的结果?

考虑:

var reg = new RegExp("^19[-\\d]*","g");
reg.test('1973-02-01') // true
reg.test('1973-01-01') // false
Run Code Online (Sandbox Code Playgroud)

为什么第三行会返回false?如果我删除"g"标志,则返回true.

javascript regex

8
推荐指数
1
解决办法
414
查看次数

IE中的Javascript堆栈跟踪(或者只是一个简单的Javascript错误)

我遇到了这种方法来生成一个Javascript堆栈跟踪(以修复IE特定的bug):http://pastie.org/253058.txt听起来非常有用,但是当我调用它时,我得到的堆栈跟踪是为了脚本本身的代码?!

可以更改此代码以生成一般堆栈跟踪吗?或者有更好的方法来获取IE中的堆栈跟踪?

(function () {

YOUR_NAMESPACE.getStackTrace = (function () {

var mode;
try {(0)()} catch (e) {
    mode = e.stack ? 'Firefox' : window.opera ? 'Opera' : 'Other';
}

switch (mode) {
    case 'Firefox' : return function () {
        try {(0)()} catch (e) {
            return e.stack.replace(/^.*?\n/,'').
                           replace(/(?:\n@:0)?\s+$/m,'').
                           replace(/^\(/gm,'{anonymous}(').
                           split("\n");
        }
    };

    case 'Opera' : return function () {
        try {(0)()} catch (e) {
            var lines = e.message.split("\n"),
                ANON = '{anonymous}',
                lineRE = /Line\s+(\d+).*?in\s+(http\S+)(?:.*?in\s+function\s+(\S+))?/i,
                i,j,len;

            for (i=4,j=0,len=lines.length; …
Run Code Online (Sandbox Code Playgroud)

javascript debugging

7
推荐指数
1
解决办法
1万
查看次数

java.lang.ExceptionInInitializerError由以下引起:java.lang.NullPointerException

这是来自OCJP的例子.我写了以下代码

public class Test {

  static int x[];

  static {
     x[0] = 1;
  }

  public static void main(String... args) {
  }        
}       
Run Code Online (Sandbox Code Playgroud)

输出: java.lang.ExceptionInInitializerError

引起:java.lang.NullPointerException at x[0] = 1;

它为什么扔NullPointerException而不是ArrayIndexOutOfBoundException.

java exception nullpointerexception

7
推荐指数
1
解决办法
8万
查看次数

需要向静态HTML网站添加搜索

基本上我有一个旧的静态HTML网站(http://www.brownwatson.co.uk/brochure/page1.html)我需要添加一个搜索框来搜索一个名为/ brochure的文件夹中的文件夹是html文档和图像等我需要搜索以查找ISBN号,书籍参考号,标题等.没有数据库托管服务提供商有PHP我试图创建这样的东西:

<div id="contentsearch">
         <form id="searchForm" name="searchForm" method="post" action="search.php">
           <input name="search" type="text" value="search" maxlength="200" />
           <input name="submit" type="submit" value="Search" />
           </form>
         <?php
$dir = "/brochure/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
    while (($file = readdir($dh)) !== false) {
        if($file == $_POST['search']){
            echo('<a href="'.$dir . $file.'">'. $file .'</a>'."\n");
        }
    }
    closedir($dh);
}
}
?>
       </div>
Run Code Online (Sandbox Code Playgroud)

我知道,我知道这很糟糕,不会有任何想法吗?多年来我没有创建这样的东西,而且几乎只需要一些代码并将它们粘在一起!

html php forms directory search

7
推荐指数
3
解决办法
1万
查看次数

如何只保留符合特定条件的数组项?

我有一个数组,我想过滤它只包含符合特定条件的项目.可以用JavaScript完成吗?

一些例子:

[1, 2, 3, 4, 5, 6, 7, 8] // I only want [2, 4, 6, 8], i.e. the even numbers

["This", "is", "an", "array", "with", "several", "strings", "making", "up", "a", "sentence."] // I only want words with 2 or fewer letters: ["is", "an", "up", "a"]

[true, false, 4, 0, "abc", "", "0"] // Only keep truthy values: [true, 4, "abc", "0"]
Run Code Online (Sandbox Code Playgroud)

javascript arrays filter

7
推荐指数
2
解决办法
2万
查看次数

停止所有代码并继续,就像JS中的alert()一样

让我解释一下:当您在JS中调用alert()时,警报下方的所有代码都将停止,当您单击Ok时,代码将返回工作.

我使用以下代码创建自己的自定义警报:

function cAlert()
{
var bOn;
this.show = function (content)
{       
    bOn = true;
    document.write('<div id="turnOffLight"></div><div id="cAlertBox"><div id="cAlertImageBox"><img style="position: absolute; top: 54%; left: 50%; margin-top: -32px; margin-left: -32px;" src="Images/Vectors/1429744831_678136-shield-warning-64.png" alt=""/> </div><div id="cAlertContentBox"> </div><div id="cAlertButtonBox"><input id="cAlertButtonStyle" type="button" value="OK" onclick="cAlert.ok()" /></div></div>');
    $("#cAlertContentBox").html(content);
    $("#cAlertBox").show();
    $("#turnOffLight").fadeIn("fast");

    var div = document.getElementById('cAlertBox').offsetWidth;
    var res = -Math.abs(div / 2);
    document.getElementById('cAlertBox').style.marginTop = res + "px";
};
this.ok = function ()
{
    $("#cAlertBox").hide();
    $("#turnOffLight").fadeOut("medium");
    bOn = false;
};
}
Run Code Online (Sandbox Code Playgroud)

在其他页面中:

<head>
    <script src="Scripts/jQuery_1.11.2.js" type="text/javascript"></script>
    <script src="Scripts/cAlertScript.js" type="text/javascript"></script>
    <script …
Run Code Online (Sandbox Code Playgroud)

javascript alert

7
推荐指数
1
解决办法
1074
查看次数

在HTML画布上获取两个不同位置的坐标

我的代码的目标:

  1. 每当用户单击画布时,在HTML画布上绘制一个小矩形.矩形应该有一个小数字,表示用户制作的矩形数.

  2. 用户应该能够使用直线连接任意两个矩形.(最好只需按下鼠标左键,将鼠标从第一个矩形移到第二个矩形)

方法和我的尝试

正如你在这个jsFiddle中看到的那样,我已经能够很好地实现上面的第一部分.单击画布时,会在其中生成一个带有数字的矩形.但我对第二部分真的很无能为力.

如何让用户连接任何两个制作的矩形?我想只有在有一个矩形的情况下才能建立连接(所以我需要存储已经制作的每个矩形的坐标,这是可以的,因为我可以使用一个数组).基本上,我只是想检查mousedown是在一个地方而鼠标在另一个地方.我如何获得这两个不同的坐标(mousedown和其他鼠标之一),并在它们之间画一条线?我给了上面的小提琴,但仍然是我的jquery:

$(function () {
    var x, y;
    var globalCounter = 0;
    $('#mycanvas').on("click", function (event) {

        x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
        x -= mycanvas.offsetLeft;

        y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
        y -= mycanvas.offsetLeft;

        // alert("x:"+x+"y: "+y);

        drawRectangle(x, y);
    });

    function drawRectangle(x, y) {
        var acanvas = document.getElementById("mycanvas");
        var context = acanvas.getContext("2d");
        context.strokeRect(x, y, 25, 25);
        globalCounter++;
        writeNo(x, y, globalCounter);
    }

    function writeNo(x, y, n) {
        var acanvas = document.getElementById("mycanvas"); …
Run Code Online (Sandbox Code Playgroud)

javascript jquery html5 canvas

6
推荐指数
1
解决办法
921
查看次数

如何在Node.js中打开Windows-1255编码的文件?

我有一个Windows-1255(希伯来语)编码的文件,我希望能够在Node.js中访问它.

我尝试打开文件fs.readFile,它给了我一个Buffer我无法做任何事情.我尝试将编码设置为Windows-1255,但是无法识别.

我也检查了windows-1255,但我无法解码,因为fs.readFile要么给出一个Buffer或一个UTF8字符串,并且包需要一个1255编码的字符串.

如何读取Windows-1255Node.js中的-encoded文件?

javascript character-encoding hebrew fs node.js

6
推荐指数
1
解决办法
4028
查看次数