Firemonkey XE6:如何在我的adroiddevice上使用全分辨率?

时间:2014-05-12 12:48:48

标签: android delphi firemonkey

我正在构建一个Firmonkey移动应用程序。

我有一部手机(Galaxy S3)。该设备的绝对分辨率为1280 x 720。 当我要求canvas.width时,我得到640x360。 我知道Scale,是绝对坚决与画布大小之间的联系。

我的问题。 当我在画布上用thickness := 1画一条线时,我希望线条尽可能薄。

如果我这样做:

if Self.Canvas.BeginScene then
    try
      Self.Canvas.Stroke.Thickness := 1;
      Self.Canvas.Stroke.Kind := TBrushKind.Solid;
      Self.Canvas.Fill.Color := TAlphaColorRec.Black;
      Self.Canvas.Fill.Kind := TBrushKind.Solid;
      for I := 1 to 20 do
        Self.Canvas.DrawLine(PointF((I * 30), 0), PointF((I * 20), ClientHeight), 1);
    finally
      Self.Canvas.Canvas.EndScene;
    end;

这些线条不会是平等的,很薄的"在我的显示器上。如果编译为windows,它可以正常工作。

更多:如果我想要显示尺寸与我的设备绝对分辨率(1280x780)完全匹配的图片,那么这张图片显示不完美,但调整到一些较低的分辨率(等于画布)...

那么我怎么能让我的画布访问我的设备上的每个像素,所以我可以自己控制每个像素???

我已访问该页面:http://www.fmxexpress.com/perfect-line-thickness-using-tcanvas-drawline-with-delphi-xe5-firemonkey-on-android-and-ios/ 但这是一个炒作(这是行不通的)。我无法获得/使用绝对分辨率。

1 个答案:

答案 0 :(得分:0)

在你的情况下,Canvas.Scale是2.因为无法设置Canvas.Scale,所以可以使用Canvas.SetMatrix反转缩放来完成使用本机设备分辨率的绘图。

Canvas.SetMatrix(TMatrix.CreateScaling(1 / Canvas.Scale, 1 / Canvas.Scale) * Canvas.Matrix);

在此之后,您将以原生设备分辨率绘制。