引用 29 楼 leoliu0128 的回复:
我的问题已解决了,问题出在将像素读到LCD上的语句上,我的logo对应的数组也是放在Oal里面的。
我是用BMP2C.exe工具将320x240图片转化为16BPP的数组
如下是将像素读到LCD的代码,现在终于理解为什么之前不成功的原因了,感谢各位的指教!!
{
? ? int? i;
? ? ? ? int j;
? ? ? ? int i2;
? ? ? ? int j2;
? ? ? ? unsigned short *base = (unsigned short *) ScreenBitmap;
? ? ? ? for (i = 320; i >= 0; i--)
? ? ? ? {
? ? ? ? for (j = 0; j < 240; j++)
? ? ? ? ? ? {
? ? ? ? ? ? i2 = i < < 1;
? ? ? ? ? ? ? ? j2 = j < < 1;
? ? ? ? PutPixel(i2, j2, *base);
? ? ? ? PutPixel(i2, j2 + 1, *base);
? ? ? ? PutPixel(i2 + 1, j2, *base);
? ? ? ? PutPixel(i2 + 1, j2 + 1, *base++);
? ? ? ? ? ? }
? ? ? ? }
? ? }
首先恭喜你见到画面了!
针对你的代码我有点疑问:从你的for循环来看应该是自底至顶扫描。
问题1:
i2 = i < < 1;左移1位相当于乘2,变成640?
2:
PutPixel(i2, j2, *base);
PutPixel(i2, j2 + 1, *base);
PutPixel(i2 + 1, j2, *base);
PutPixel(i2 + 1, j2 + 1, *base++);
你把*base赋给三个点,难道和RGB565有关?从你的for循环来看应该是自底至顶扫描。可视你这里的i2又加1?难道我理解错了?
我的C学的不好,还请你不要嫌我笨哈!