LCD横屏问题,XY

2019-10-15 23:52发布

//设置光标位置
//Xpos:横坐标
//Ypos:纵坐标
void LCD_SetCursor(u16 Xpos, u16 Ypos)

  if(lcddev.id==0X9341||lcddev.id==0X6804)
 {     
  LCD_WR_REG(lcddev.setxcmd);
  LCD_WR_DATA(Xpos>>8);
  LCD_WR_DATA(Xpos&0XFF); 
  LCD_WR_REG(lcddev.setycmd);
  LCD_WR_DATA(Ypos>>8);
  LCD_WR_DATA(Ypos&0XFF);
 }else
 {
  if(lcddev.dir==1)Xpos=lcddev.width-1-Xpos;//横屏其实就是调转x,y坐标
  LCD_WriteReg(lcddev.setxcmd, Xpos);
  LCD_WriteReg(lcddev.setycmd, Ypos);
 } 
}  

原子大哥,上面  “if(lcddev.dir==1)Xpos=lcddev.width-1-Xpos;//横屏其实就是调转x,y坐标
”这句话怎么是什么原理?我刚接触LCD方面的资料,想了半天也没有理出个头绪,不知道怎么个思路?所谓调整X,Y坐标,怎么体现出来的?恳请原子大哥帮忙指导指导,让我有点头绪,现在卡在这里过不去了,多谢原子大哥!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
正点原子
1楼-- · 2019-10-16 03:27
其实就是个坐标变换啊。
这个不难吧
zjm_z
2楼-- · 2019-10-16 05:21
原子大哥,麻烦你再帮忙指导下,为什么只变换X轴,Y轴却没有变换(是不是竖屏的时候原点在左上角,横屏的时候原点在右上角,所以X轴需要lcddev.width-1-Xpos,而Y轴却不需要),我这样理解对不对?
正点原子
3楼-- · 2019-10-16 08:39
你做一个原点的坐标变换,大概就明白了。
原来(0,0)应该是在左上方。
变换为新的坐标(横屏),那么就应该在左下角了(用原来的坐标表示就是:(0,320)).
原来的x方向,刚好和新坐标的y方向一致,而且值也一致,所以y'=x。
原来的y方向,和新坐标的x方向相反,所以新坐标的x'=320-y
anazel
4楼-- · 2019-10-16 13:44
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-10-16 16:44
你这是一种。
我的一般竖屏,是左上角为原点。
横屏,当然还是左上角做原点,你这变到右下角了。
anazel
6楼-- · 2019-10-16 19:14
这样转换后那个红点儿的坐标不还是10,20吗



一周热门 更多>