psplash進度條旋轉成功
轉載地址:https://blog.csdn.net/zhanzheng520/article/details/13002459
pspfalsh是一個嵌入式中顯示開機進度的開源軟體,http://wiki.openmoko.org/wiki/Splash_screen可以看到相關的一些內容,看了一下,大概是什麼進行開機介面設定的一個程式,好像不止一個,分什麼Splash screen、U-boot Splash 、psplash 、X splash等,看樣子是用在不同的階段吧,這裡只需搞定psplash就可以了。
psplash開機畫面的大概修改過程如下:
先準備一個png圖片檔案,
make-image-header.sh my_image.png HAND
進行處理,
mv my_image-img.h psplash-hand-img.h
修改名字,
然後configure,然後make,有效,開機畫面被成功修改為所準備的png圖片。
因為屏的方向與通常的不一致,且旋轉引數修改無效,開機畫面可以重新繪製,但進度條的方向非得自己改程式碼了。
首先通常執行時總出現一條橫貫左右的白條,經查,該函式作怪,
/* Clear */
/*psplash_fb_draw_rect (fb,
0,
fb->height - (fb->height/6) - h,
fb->width,
h,
0xec, 0xec, 0xe1);*/
刪後該問題解決。
關於進度條,先刪了一個進度條的外框函式,感覺沒什麼用,刪後效果還好,該函式為:
/* Draw progress bar border */
/*psplash_fb_draw_image (fb,
(fb->width - BAR_IMG_WIDTH)/2,
fb->height - (fb->height/10),
BAR_IMG_WIDTH,
BAR_IMG_HEIGHT,
BAR_IMG_BYTES_PER_PIXEL,
BAR_IMG_RLE_PIXEL_DATA);*/
檢視psplash.c裡邊有關於進度條的函式,
psplash_draw_progress (PSplashFB *fb, int value)
{
int x, y, width, height, barwidth;
/* 4 pix border */
x = ((fb->width - BAR_IMG_WIDTH)/2) + 4 ;
y = fb->height - (fb->height/6) + 4;
width = BAR_IMG_WIDTH - 8;
height = BAR_IMG_HEIGHT - 8;
if (value > 0)
{
barwidth = (CLAMP(value,0,100) * width) / 100;
psplash_fb_draw_rect (fb, x + barwidth, y,
width - barwidth, height,
0xec, 0xec, 0xe1);
psplash_fb_draw_rect (fb, x, y, barwidth,
height, 0x6d, 0x6d, 0x70);
}
else
{
barwidth = (CLAMP(-value,0,100) * width) / 100;
psplash_fb_draw_rect (fb, x, y,
width - barwidth, height,
0xec, 0xec, 0xe1);
psplash_fb_draw_rect (fb, x + width - barwidth,
y, barwidth, height,
0x6d, 0x6d, 0x70);
}
DBG("value: %i, width: %i, barwidth :%i/n", value,
width, barwidth);
}
看了一下,也就是畫方框,之後根據進度畫著了色的進度框,改程式碼如下:
void
psplash_draw_progress (PSplashFB *fb, int value)
{
int x, y, width, height, barhight;
x = 100;
y = ((fb->height - BAR_IMG_WIDTH)/2) + 4;
width =BAR_IMG_HEIGHT - 16;//width = BAR_IMG_WIDTH - 8;
// height = BAR_IMG_HEIGHT - 8;
height = BAR_IMG_WIDTH - 8;//height = BAR_IMG_HEIGHT - 16;
if (value > 0)
{
//barwidth = (CLAMP(value,0,100) * width) / 100;
barhight = (CLAMP(value,0,100) * height ) / 100;
psplash_fb_draw_rect (fb, x , y+ barhight,//psplash_fb_draw_rect (fb, x + barwidth, y,
width , height- barhight,//width - barwidth, height,
0xec, 0xec, 0xe1);
psplash_fb_draw_rect (fb, x, y, width,
barhight, 0x6d, 0x6d, 0x70);
}
else
{
barhight = (CLAMP(-value,0,100) * height) / 100;
psplash_fb_draw_rect (fb, x, y,
width, height- barhight,
0xec, 0xec, 0xe1);
psplash_fb_draw_rect (fb, x,
y, width, barhight,
0x6d, 0x6d, 0x70);
}
DBG("value: %i, width: %i, barhight :%i/n", value,
width, barhight);
}
改後一試,ok,效果還不錯。
相關文章
- jQuery環形旋轉載入進度條效果jQuery
- 短視訊平臺搭建,Android自定義旋轉進度條Android
- Android 自定義圓形旋轉進度條,仿微博頭像載入效果Android
- 【新特性速遞】進度條,進度條,進度條
- CSS3動畫(360度旋轉、旋轉放大、放大、移動)CSSS3動畫
- 百度旋轉驗證碼
- Qt 進度條QT
- 簡單進度條
- 學習進度條
- Python進度條技巧Python
- canvas 畫進度條Canvas
- HTML <progress> 進度條HTML
- wkwebView 新增 進度條WebView
- Linux 進度條(非100%)列出unzip進度Linux
- Android花樣loading進度條(三)-配文字環形進度條Android
- icp配準進度條
- ProgressBar進度條顏色
- Excel實現完成進度的進度條結果Excel
- LVGL高效顯示進度條
- Python之程式碼進度條Python
- golang 進度條功能實現Golang
- Flutter 波浪圓形進度條Flutter
- canvas環形進度條效果Canvas
- 數字進度條元件NumberProgressBar元件
- 橡皮筋進度條ElasticProgressBarAST
- 想做一些小效果,影片怎麼旋轉90度?
- 旋轉相簿
- 旋轉字串字串
- 將圖片旋轉(這裡不是旋轉imageView)View
- carousel 輪播自定義進度條
- 58python 進度條設計Python
- 關於WPF進度條的使用
- canvas錐形漸變進度條Canvas
- laravel自定義命令列印進度條Laravel命令列
- bat檔案進度條程式碼BAT
- c# 控制檯console進度條C#
- Python 輸出命令列進度條Python命令列
- Ajax 處理時進度條使用