hpdell 发表于 2017-4-12 11:09:01

请教下,关于 lcd屏横屏显示坐标计算的问题?

请教下,关于 lcd屏横屏显示坐标计算的问题?

目前竖屏显示是没有,包括竖屏180度显示

#define LTDC_PIX_SIZE   2   // 使用 rgb565 数据格式

uint32_t   index ;
uint16_t    g_LcdWidth, g_LcdHeight;

g_LcdWidth= 800;         // 这个值固定不变
g_LcdHeight= 1280;      // 这个值固定不变

index = (LTDC_PIX_SIZE * (uint32_t)(Ypos * g_LcdWidth + Xpos));// 竖屏 ok
index = (LTDC_PIX_SIZE * (uint32_t)((g_LcdHeight - Ypos - 1) * g_LcdWidth + (g_LcdWidth - Xpos - 1)));   // 180°竖屏 ok


index = (LTDC_PIX_SIZE * (uint32_t)Xpos * g_LcdHeight + g_LcdWidth- Ypos - 1);    // 目前这个显示比较乱

index = (LTDC_PIX_SIZE * (uint32_t) g_LcdWidth * (g_LcdHeight - Xpos) + Ypos);   // 这个横屏显示 貌似 y 显示的坐标不够,比如本来是y=4,显示却成了2或者3

Mandelbrot_Set 发表于 2017-4-12 16:56:28

目测括弧少了一对      

hpdell 发表于 2017-4-12 22:29:43

本帖最后由 hpdell 于 2017-4-12 22:32 编辑

终于搞定了啊

#define   LCD_PIXEL_WIDTH    800#define   LCD_PIXEL_HEIGHT   1280
/*
函数功能:计数显示字符的地址
函数名称:BSP_LCD_PutPixelAddr
返回值:返回计算后的字符地址数据
*/
uint32_tBSP_LCD_PutPixelAddr(uint16_t Xpos, uint16_t Ypos)
{
      uint32_t index = 0;

      if (g_LcdDirection == 0)                      // 竖屏 横屏 ( HE070IA_04F 型号屏默认显示方向为竖屏)
      {
                index = (LTDC_PIX_SIZE * (uint32_t)(Ypos * LCD_PIXEL_WIDTH + Xpos));// 竖屏 ok
      }
      else if (g_LcdDirection == 1)          // 横屏
      {
                index = (LTDC_PIX_SIZE * (uint32_t)(Xpos * LCD_PIXEL_WIDTH+ (LCD_PIXEL_WIDTH - Ypos - 1)));   // 横屏 ok
      }
      else if (g_LcdDirection == 2)          // 竖屏180°
      {
                index = (LTDC_PIX_SIZE * (uint32_t)((LCD_PIXEL_HEIGHT - Ypos - 1) * LCD_PIXEL_WIDTH + (LCD_PIXEL_WIDTH - Xpos - 1)));   // 180°竖屏 ok
      }
      else if (g_LcdDirection == 3)          // 横屏180°
      {
                index = (LTDC_PIX_SIZE * (uint32_t)((LCD_PIXEL_HEIGHT - Xpos - 1) * LCD_PIXEL_WIDTH+ Ypos));   // 180°横屏 ok
      }         
return index;
}


不知道为什么,不管是横屏还是竖屏,都必须得 * LCD_PIXEL_WIDTH ,也就是800 ???????????

这款屏默认是 800*1280的分辨率,意思也就是默认为竖屏显示的,是不是跟这个情况有关啦 ?????????

zero99 发表于 2017-5-2 09:10:54

hpdell 发表于 2017-4-12 22:29
终于搞定了啊

#define   LCD_PIXEL_WIDTH    800#define   LCD_PIXEL_HEIGHT   1280


楼主最后两个问题找到原因了吗

hpdell 发表于 2017-5-2 09:39:04

zero99 发表于 2017-5-2 09:10
楼主最后两个问题找到原因了吗

找到原因了,

原因是 我的 屏 本来就是 800(rgb) * 1280的,所以不管是横屏还是竖屏,都必须 需要 * 800才可以的

如果是 1280(rgb) * 800 ,那么横竖屏显示时,地址计算就需要 *1280

zero99 发表于 2017-5-3 14:10:20

hpdell 发表于 2017-5-2 09:39
找到原因了,

原因是 我的 屏 本来就是 800(rgb) * 1280的,所以不管是横屏还是竖屏,都必须 需要 * 800 ...

谢谢分享~
页: [1]
查看完整版本: 请教下,关于 lcd屏横屏显示坐标计算的问题?