屏幕显示的坐标的探讨

简介: 注!这里的横向竖向是指终端实际显示的方向。   大部分手持终端的显示模式如图1.当我们在Activity的onCreate()中执行下面的语句时,整个屏幕会出现像图2的走向。
image

注!这里的横向竖向是指终端实际显示的方向。

 

大部分手持终端的显示模式如图1.当我们在Activity的onCreate()中执行下面的语句时,整个屏幕会出现像图2的走向。

/*  从下往上运行,默认是从右到左  */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  // 横向

由上可见,显然图3才是我们想要的显示效果。这又如何实现?

 

我们知道Canvas画布有两个经典的函数,分别是:

void android.graphics.canvas.drawText(text, x, y, paint);

void android.graphics.Canvas.drawLine(float startX, float startY, float stopX, float stopY, Paint paint) ;

1、画文字的实现分析




直接使用这两个函数的画出的必须是图2的效果。图3效果的实现,需要使用一些技巧即使用画布旋转。DrawText()函数重新将Canvas.drawText()封装来实现画图3的文字的效果。

void DrawText(Canvas canvas ,String text , float x ,float y,Paint paint ,float angle)
{
    if(angle != 0)
    {
         /* 对画布旋转,再画文本 */
        canvas.rotate(angle, x, y);  
    }
    canvas.drawText(text, x, y, paint);
    /*  使用画布恢初始状,以便画下一句文字时再进行旋转*/
    if(angle != 0)
    {
        canvas.rotate(-angle, x, y);
    }
}

 

上图中,对于A语句,需要如下调用:

DrawText(canvas,text,x,y,painter,-90);

对于B语句,需要如下调用:

DrawText(canvas,text,x,y,painter,-90);

 

2、画直接的实现分析

canvas.drawLine(100, 100, 100, 400, painter);

相关文章
|
4天前
两个坐标间画线
两个坐标间画线
10 3
|
4月前
|
API C++ 计算机视觉
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
|
2天前
LabVIEW当鼠标悬停在图形曲线上时显示坐标
LabVIEW当鼠标悬停在图形曲线上时显示坐标
|
5月前
|
编解码 定位技术 Windows
电脑多个不同分辨率屏幕鼠标移动时出现偏移、错位情况的解决方法
电脑多个不同分辨率屏幕鼠标移动时出现偏移、错位情况的解决方法
102 1
显示屏幕大小
import os os.get_terminal_size() os.terminal_size(columns=80, lines=24)
2747 0
C# 获取当前屏幕的宽高和位置
原文:C# 获取当前屏幕的宽高和位置 上一篇博客《C# 获取当前屏幕DPI》,介绍了如何获取当前屏幕的DPI设置 本章主要介绍如何获取当前窗口所在屏幕的信息 当前屏幕信息 如果当前是单屏幕,可以直接获取主屏幕 var primaryScreen = Screen.
1244 0
获取 UIElement 相对于屏幕原点所占用的矩形区域
原文:获取 UIElement 相对于屏幕原点所占用的矩形区域 // 演示如何获...
883 0