在GWT中获取window.devicePixelRatio?

时间:2012-11-24 07:51:54

标签: gwt

我正在使用canvas做一些值得的,我需要获得以下值:

// This one:
window.devicePixelRatio

// and any one of:
Context2d.webkitBackingStorePixelRatio ||
Context2d.mozBackingStorePixelRatio ||
Context2d.msBackingStorePixelRatio ||
Context2d.oBackingStorePixelRatio ||
Context2d.backingStorePixelRatio

这些似乎在GWT等效类中不可用(我认为) - 我是否必须创建一个本机方法来抓取它们?还是有更好的方法来实现它?

由于

1 个答案:

答案 0 :(得分:1)

你是对的,它们在核心gwt类中不可用,所以你必须使用jsni来实现它们。

另一种选择是使用gwt-2.5.0中包含的elemental并拥有这些方法,但元素仅用于webkit。

[编辑]

您可以使用所需的jsni方法创建自己的context2类,并使用叠加转换将gwt context2转换为您的类:

  public class MyContext2 extends Context2d {
    public final native float webkitBackingStorePixelRatio() /*-{
      return this.webkitBackingStorePixelRatio;
    }-*/;    
  }

  Context2d ctx = ...;

  // call your method through the cast()
  float ratio = ctx.<MyContext2>cast().webkitBackingStorePixelRatio();

  // or convert the context to your class
  MyContext2 mctx = ctx.cast();
  float ratio = mctx.webkitBackingStorePixelRatio();