Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单的图形API与透明度,多边形,读取图像像素?_Javascript_Python_Graphics_Canvas_Svg - Fatal编程技术网

Javascript 简单的图形API与透明度,多边形,读取图像像素?

Javascript 简单的图形API与透明度,多边形,读取图像像素?,javascript,python,graphics,canvas,svg,Javascript,Python,Graphics,Canvas,Svg,我需要一个支持以下功能的简单图形库: 能够使用RGBA颜色(即部分透明)绘制多边形(不仅仅是矩形!) 能够加载位图图像 能够读取给定坐标中像素的当前颜色 理想情况下使用JavaScript或Python 似乎HTML5画布可以处理#2和#3但不能处理#1,而SVG可以处理#1和#2但不能处理#3。我是否遗漏了(关于这两个人中的任何一个)?或者还有其他选择吗?也许拉斐尔-皮加梅可以做所有这些事情。OTOH,我不认为它能很好地嵌入到GUI中。我投票支持PyGame,但我还想指出,新的QT图形库似乎很

我需要一个支持以下功能的简单图形库:

  • 能够使用RGBA颜色(即部分透明)绘制多边形(不仅仅是矩形!)
  • 能够加载位图图像
  • 能够读取给定坐标中像素的当前颜色
  • 理想情况下使用JavaScript或Python


    似乎HTML5画布可以处理#2和#3但不能处理#1,而SVG可以处理#1和#2但不能处理#3。我是否遗漏了(关于这两个人中的任何一个)?或者还有其他选择吗?

    也许拉斐尔-

    皮加梅可以做所有这些事情。OTOH,我不认为它能很好地嵌入到GUI中。

    我投票支持PyGame,但我还想指出,新的QT图形库似乎很有能力。我还没有将PyQT用于QT4,但我非常喜欢使用QT3进行PyQT开发。

    我最终选择了Canvas。多边形的“秘密”是使用路径。谢谢,“Turng”

    GameJs可以做到这一点,甚至更多——它与前面提到的PyGame类似

    能够使用RGBA颜色(即部分透明)绘制多边形(不仅仅是矩形!)

    透明颜色可以定义为“rgba(50,50,50,0.1)”(最后一个是alpha)

    能够加载位图图像

    var surface = gamejs.image.load('images/foo.png')
    

    能够读取给定坐标中像素的当前颜色

    // a surface array is a special DOM canvas array
    // that is superfast for per pixel access / manipulation
    
    var srfArray = new SurfaceArray(display);
    srfArray.set(50, 100, [255, 0, 0, 100]);
    srfArray.get(20, 30);
    

    Turng,你能举个例子吗?我找不到。它是怎么做的#3?它在SVG和VML上是一个非常薄的包装器,所以如果Raphael可以做到这一点,那么SVG已经可以做到了。
    // a surface array is a special DOM canvas array
    // that is superfast for per pixel access / manipulation
    
    var srfArray = new SurfaceArray(display);
    srfArray.set(50, 100, [255, 0, 0, 100]);
    srfArray.get(20, 30);