小编Sim*_*ris的帖子

在WPF中更改Canvas的坐标系

我正在编写一个使用Canvas定位元素的地图应用程序.对于每个元素,我必须以编程方式将元素的Lat/Long转换为画布的坐标,然后设置Canvas.Top和Canvas.Left属性.

如果我有一个360x180画布,我可以将画布上的坐标转换为X轴上的-180到180而不是0到360,而Y轴上的90到-90而不是0到180?

扩展要求:

  • 画布可以是任何尺寸,因此如果它是360x180或5000x100仍然可以使用.
  • Lat/Long区域可能不总是(-90,-180)x(90,180),它可以是任何东西(即(5,-175)x(89,-174)).
  • 像PathGeometry这样的元素是基点,而不是基于Canvas.Top/Left的元素需要工作.

c# wpf xaml wpf-controls

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

用于图表创建的Javascript库?

哪个JavaScript库(免费或商业)可以构建计算机网络图或电气图.此外,它支持图表中不同项目之间的动画等.

谢谢.

javascript jquery svg canvas

17
推荐指数
4
解决办法
3万
查看次数

拖动并移动画布上绘制的圆圈

我正在开发一个Android应用程序,应该允许用户在画布上绘制一个圆圈并拖动它.我已经能够在上面绘制线条和圆圈.但我似乎无法拖动它.

是否可以在Android中拖动画布上绘制的对象?例如,如果我在圆圈内检测到触摸,如何从先前位置删除圆圈并将其移动到当前位置?我试过了invalidate().但是如果用户绘制了多个圆圈并想要移动它们,它就无法工作.

android android-canvas

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

如何在Android中完全加载ImageView时获取

我正在开发一个应用程序,它在一堆图像上绘制线条.为了选择这些图像,我有一个广播组,每当用户点击一个单选按钮时,图像就会加载所有图纸.

在我的收音机听众中,我有以下代码:

bitmap = BitmapUtils.decodeSampledBitmapFromResource(root + DefinesAndroid.CAMINHO_SHOPPINGS_SDCARD + nomeImagemAtual, size.x, size.y);
mImage.setImageBitmap(bitmap);

mImage.setDrawLines(true);
mImage.setImageBitmap(loadBitmapFromView(mImage));
Run Code Online (Sandbox Code Playgroud)

decodeSampledBitmapFromResource我从Android开发人员的这个链接获得的方法(它更有效地加载位图)http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

这是我调用以获取视图位图的方法

    public static Bitmap loadBitmapFromView(View v) {
        Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
        Canvas c = new Canvas(b);
        v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
        v.draw(c);
        return b;
}
Run Code Online (Sandbox Code Playgroud)

我正在设置图像Bitmap,mImage因为我正在使用ImageViewTouch库(它可以在ImageView上进行缩放缩放),如果我不这样做,所有画布绘图都会被删除,图像上的任何交互都会被删除(比如放大/出).

错误日志如下

07-11 21:13:41.567: E/AndroidRuntime(20056): java.lang.IllegalArgumentException: width and height must be > 0
07-11 21:13:41.567: E/AndroidRuntime(20056):    at android.graphics.Bitmap.createBitmap(Bitmap.java:638)
07-11 21:13:41.567: E/AndroidRuntime(20056):    at android.graphics.Bitmap.createBitmap(Bitmap.java:620)
Run Code Online (Sandbox Code Playgroud)

我几乎可以肯定这个错误正在发生,因为当我调用getBitmapFromView方法时图像位图没有完全加载.

如何知道视图何时完全加载?

android bitmap imageview android-canvas

13
推荐指数
2
解决办法
9284
查看次数

使用HTML5 Canvas捕获网页的一部分?

我知道您可以使用画布从HTML5视频流中捕获图像并在页面上显示它们.我感兴趣的是你可以使用canvas对象在网页上创建一个叠加层,然后捕获该页面或其中一部分的PNG快照.

我想通过添加屏幕截图(在浏览器页面内)来增强我们的网站审阅工具,然后可以将其提交到远程服务器.

YouTrack使用Java applet实现这一点,但现代HTML5技术是否可行?

对此问题的任何其他建议的解决方案也将不胜感激.

谢谢

javascript html5 screenshot canvas

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

了解HTML 5画布比例和翻译顺序

我正在做一个围绕X中心的图形,Y为0,0.当渲染时,我使用translate重新定位,然后使用scale使图形填充画布(例如,将所有内容缩放50%).

我注意到你是否调用scale然后翻译,翻译然后扩展并且我无法理解它是很重要的.这是一个问题,因为一切并不总是合适,但我的心智模型并不完整,所以很难修复它.

有人可以解释为什么缩放和翻译调用的顺序很重要吗?

javascript html5 canvas transform scale

12
推荐指数
1
解决办法
7622
查看次数

WPF强制重绘画布

好的,在Windows窗体中,您可以使用它.refresh()来在元素上生成重绘事件.WPF中是否有类似的解决方案?

解释我正在做什么,我在画布对象上绘制一个迷宫,并希望看到迷宫被绘制(所以我可以看到进展),而不是等待28分钟突然出现的解决方案.我在画布上用一系列Rectangles 绘制块.刷新应该在矩形还是画布上?

这是最近的输出:http: //imgur.com/ftFOv

如果有可能,我想在c#中找到解决方案.谢谢.

c# wpf wpf-controls redraw

10
推荐指数
4
解决办法
5万
查看次数

Microsoft Surface设备上与Firefox的交互性和触摸?

在Microsoft触摸设备(例如Surface Pro)上,在Chrome和IE上,可以捕获鼠标/指针/触摸事件,并在此过程中阻止滚动页面.

在Firefox上,在阻止页面滚动触摸时获得相同级别的活动似乎是不可能的.您可以通过阻止"滚动"来阻止页面滚动:

can.addEventListener('wheel', function(e) {
  console.log('stopping wheel')
  e.preventDefault();
}, false);
Run Code Online (Sandbox Code Playgroud)

但Firefox似乎不会发出您可以侦听的鼠标/指针/触摸事件,因此您无法执行相同的操作.

这里有一个实例:

https://codepen.io/simonsarris/pen/PJwMay

使用Surface上的触摸:您可以在Chrome和IE中的画布上绘图,但是您无法在Firefox中绘制它.如果您注释掉"wheel"监听器,Firefox将另外滚动页面.

所以问题是:在Firefox中获得HTML Element触摸交互需要什么,与系统上的其他浏览器相同?

javascript firefox touch

10
推荐指数
1
解决办法
303
查看次数

如何在Android上正确扩展游戏

为了简单起见,我们假设我正在为Android制作一个简单的Pong克隆游戏.让我们假设它只能在横向模式下播放.(现在忽略方形手机).

我希望游戏能够在每部手机上以相同的比例显示,如果您在QVGA手机上截取游戏截图,并将屏幕截图重新调整为WVGA尺寸,它看起来几乎与游戏相同看看WVGA手机.换句话说,桨的宽度应始终为屏幕宽度的1/32,球的直径应始终为屏幕宽度的1/16.

绘制应用程序的正确方法是什么?它将在标准的SurfaceView中运行,并将其绘制到Canvas.

假设我有一个高分辨率的PNG用于球拍,球和游戏字体(记分牌,主菜单).

我是否找到物理分辨率,然后缩放Canvas通道scale(float sx, float sy)以使我的所有画布(在QVGA和WVGA上)具有相同的虚拟分辨率,然后在每个屏幕尺寸的每个位置上绘制完全相同的图元?

或者我可以在画布中以某种方式使用与密度无关的像素(倾角)吗?

android resolution android-canvas

9
推荐指数
1
解决办法
6004
查看次数

笛卡尔坐标到极坐标

看一下这里的例子:http://www.brianhare.com/physics/so.html

看看我在使用这两个主要功能的console.log:

    function distanceBetween2pts(x1, y1, x2, y2) {
        console.log("Particle: ("+x1+","+y1+") Mouse: ("+x2+","+y2+")");
        //  Pythagoras Theorem
        // PQ = sqrt( (x2-x1)^2 + (y2-y1)^2 )
        var x = (x2-x1);
        var y = (y2-y1);

        this.radius = Math.sqrt(x*x + y*y);
        this.x = x;
        this.y = y;
    }

    function polar2cartesian(R, theta) {
        this.x = R * Math.cos(theta);
        this.y= R * Math.sin(theta);
    }
Run Code Online (Sandbox Code Playgroud)

当鼠标位于粒子的上方和右侧(中心圆)时,例如: 在此输入图像描述

控制台日志显示:

Particle: (300,250) Mouse: (326,223)
artan(-27 / 26) = angle: -46.08092418666069 - theta -0.8042638494191191
Run Code Online (Sandbox Code Playgroud)

它应该是arctan(27/26)=角度:46:theta = 0.8.因为即使老鼠在中心"上方",它也会将y2-y1读为-27,因为坐标系统基于左上方的0,0.

那么问题是当X和Y都为负时使θ为正,而它应该指向相反的方向(从中心点向外).我知道我可以在这里做一个180度的技巧,但我想知道我做错了什么.

javascript math geometry cartesian polar-coordinates

9
推荐指数
1
解决办法
9377
查看次数