TFT是嵌入式可視化輸出的重要原件UTFT庫封裝了 畫圓,畫方,畫線等函數
大家是否發現用實例里面的方法顯示圖片會使內存緊張,沒有靈活性
在研究了BMP結構體之后我做出了顯示24、32位深bmp的方法
不懂結構體的可以百度自行搜查,直接上干貨!
002.png (285.93 KB, 下載次數: 60)
下載附件
2020-8-5 12:11 上傳
001.png (288.23 KB, 下載次數: 63)
下載附件
2020-8-5 12:11 上傳
000.png (304.33 KB, 下載次數: 69)
下載附件
2020-8-5 12:11 上傳
003.png (220.77 KB, 下載次數: 64)
下載附件
2020-8-5 12:22 上傳
看過我上兩篇帖子,有程序基礎的朋友可以直接復制以下內容初始化一下tft sd。
- void BMP_READ(const char *BMP_NAME,int BMP_SET_X,int BMP_SET_Y){
- //圖片名稱(深層文件夾用/分級,具體見SD庫),圖片位置x,圖片位置y
- File myFile;
- int x=-1,x_1,y=0;
- int bmp[54];
- int size_x;
- int size_y;
- int bmp_bit;
- byte bmp_bit_r;
- byte bmp_bit_g;
- byte bmp_bit_b;
- byte bmp_bit_empty;
- myFile = SD.open(BMP_NAME);//100*75
- if(myFile){
- for (int i=0;i<54;i++){
- bmp[i]=myFile.read();
- }
- size_x=bmp[18];
- size_y=bmp[22];
- bmp_bit=bmp[28];
- y=size_y;
- if (bmp_bit==24||32){
- x_1=x+1;
- //Serial.println (myFile.available());//文件總字節數
- //Serial.println(size_x);//圖片大小 長
- //Serial.println(size_y);//圖片大小 寬
- //Serial.println(bmp_bit);//圖片格式 位此處只識別為24 32位
- for (int a=0 ;a < size_x*size_y;a++){
- x=x+1;
- if(x==size_x){
- x=x_1;
- y=y-1;
- }
- bmp_bit_r = myFile.read();
- bmp_bit_g = myFile.read();
- bmp_bit_b = myFile.read();
- if(bmp_bit==32){
- bmp_bit_empty=myFile.read();
- }
- myGLCD.setColor( bmp_bit_b, bmp_bit_g ,bmp_bit_r); //BGR
- myGLCD.drawPixel(x+BMP_SET_X,y+BMP_SET_Y); //自左向右,自下到上,畫像素
- }
- myFile.close();
- return 1;
- }else{
- myGLCD.print("err",BMP_SET_X,BMP_SET_Y);
- Serial.print("err");
- return 0;
- }
- }else{
- Serial.print("err");
- return 0;
- }
- }
復制代碼 以下包括完整工程文件,所用到的庫,實例圖片
SD_BMP.zip
(5.31 MB, 下載次數: 15)
2020-8-5 12:26 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|