ftk學習記(label篇)

【 聲明:版權全部,歡迎轉載,請勿用于商業用途。 ?聯系信箱:feixiaoxing @163.com】


? ? 還是接著上面的一篇博文。

之前以前答應過大家,讓大家看一下最簡單的ftk程序是怎么執行的。所以,這里我們上傳一下圖片。



? ? 由于還是編輯模式。所以臨時還不能看到圖片在網頁中是怎么顯示的。

只是沒有關系,這次僅僅是做一個最初的嘗試。假設大家有更好的意見,最好還是用微信掃一下頭像或者私信給我,就能夠了。


? ? 前面的代碼還是比較簡單的。今天,我們來學習一下label的顯示方法。當然,無論大家是做windows phone、android app、ios,怎樣編寫gui都是一個基本功課。這些gui顯示的方法大同小異。假設有心學習一下ftk。其它的移動app相信也不在話下。只是,由于移動應用開發的語言不太一樣,有c sharp。 有java,有object c。所以差異性多少還是有點的。


? ? label,顧名思義,就是一個標簽。更直白一點,就是在窗體上某個地點顯示一串文字。當然。你能夠依據自己的須要靈活改動文字的類型、大小、顏色、背景等信息。總之就是這么個意思。閑話少說,我們能夠看看demo下label代碼是怎么編寫的。相同,今天僅僅會展示代碼的內容,詳細顯示的效果還要等待以下一篇文章。

#include "ftk.h"typedef struct _TimerInfo
{int times;FtkWidget* label;
}TimerInfo;static Ret timeout(void* ctx)
{TimerInfo* info = ctx;char buffer[32] = {0};if(info->times > 0){snprintf(buffer, sizeof(buffer), "Quit after %d seconds", info->times);ftk_widget_set_text(info->label, buffer);info->times--;return RET_OK;}else{ftk_quit();ftk_logd("%s: timeout and quit.\n", __func__);return RET_REMOVE;}
}int main(int argc, char* argv[])
{int width = 0;int height = 0;FtkGc gc = {.mask = FTK_GC_BG};TimerInfo info = {.times=5, };ftk_init(argc, argv);FtkSource* timer = ftk_source_timer_create(1000, timeout, &info);FtkWidget* win = ftk_app_window_create();width = ftk_widget_width(win);height = ftk_widget_height(win);FtkWidget* label = ftk_label_create(win, 10, 10, width - 20, 20);ftk_widget_set_text(label, "中文文本");label = ftk_label_create(win, 10, 40, width - 20, 20);ftk_widget_set_text(label, "English Text");assert(strcmp(ftk_widget_get_text(label), "English Text") == 0);gc.bg.a = 0xff;gc.bg.r = 0xF0;gc.bg.g = 0xF0;gc.bg.b = 0x80;label = ftk_label_create(win, 10, height/2, width - 20, 120);ftk_widget_set_gc(label, FTK_WIDGET_INSENSITIVE, &gc);ftk_widget_unset_attr(label, FTK_ATTR_TRANSPARENT);ftk_widget_set_text(label, "中英文混合多行文本顯示:the linux mobile development.帶有背景顏色。");label = ftk_label_create(win, 50, height/2-30, width, 20);info.label = label;ftk_widget_set_text(win, "label demo");ftk_widget_show_all(win, 1);ftk_widget_set_attr(win, FTK_ATTR_IGNORE_CLOSE);ftk_main_loop_add_source(ftk_default_main_loop(), timer);ftk_run();return 0;
}

? 代碼的內容,不是非常多,大約有個70行左右。

開始,相同首先初始化ftk,調用了ftk_init函數。在函數結尾的地方,代碼也調用了ftk_run函數。

這些都是代碼的基本流程。僅僅要你是用的是ftk。都須要遵守這個流程。中間的內容都是自己加入的。

?

??? 繼續分析,我們觀察一下,代碼都做了些什么。細細想來,事實上邏輯都差點兒相同。依次往下看,代碼創建了一個win控件,進而在win上插入了4個label控件。它們各自是中文文本、English Text、中英文混合多行文本顯示、暫時label。

除此之外,代碼中還出現了一個timer,每隔一段時間,它都會調用timeout這個函數。這個函數做了什么啊,從10行開始往下看。事實上就是定時顯示一段文字。告訴我們窗體離quit還有幾秒。假設超時了呢,當然就會調用ftk_quit這個函數,ftk在釋放完一些資源后就結束了。


? ? 這個流程不復雜。還沒有搞清楚的朋友能夠繼續看一下代碼。下次,再發布代碼的執行效果。




轉載于:https://www.cnblogs.com/yfceshi/p/6917753.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254456.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254456.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254456.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

扇形特征點提取

處理要求 分別找出扇形左上角,左下角,右上角,右下角,最高點,下面弓形最高點 原圖 halcon 處理程序 read_image (Image14208259e49d7b1cf7c544, 544.bmp) rgb1_to_gray (Image14208259e49d7b1cf7c544, GrayImage) t…

集成顯卡與獨立顯卡的區別

集成的顯卡不帶有顯存,使用系統的一部分主內存作為顯存,顯卡的數量一般是根據需要自然動態調整。顯然,使用集成顯卡運行需要大量占用顯存的程序,對整個系統的影響比較明顯,此外系統內存的頻率通常比獨立的顯存度低很多…

[ CodeVS沖杯之路 ] P3116

不充錢&#xff0c;你怎么AC&#xff1f; 題目&#xff1a;http://codevs.cn/problem/3116/ 基礎的高精度加法&#xff0c;注意一下兩個數長短不一和答案第一位的處理即可&#xff0c;當然也可以用壓位的方法做 1 #include<cstdio>2 #include<cstdlib>3 #include&l…

郵槽

郵槽是基于廣播通信體系設計出來的&#xff0c;采用無連接的不可靠的數據傳輸&#xff1b;郵槽是一種一對一或一對多的單向通信機制&#xff0c;創建郵槽的服務器進程讀取數據&#xff0c;打開郵槽的客戶機進程寫入數據&#xff1b;為保證郵槽在各種Windows平臺下都能正常工作&…

Android Studio maven-metadata.xml 卡著不動原因和解決方法

頭一天好好的&#xff0c;第二天就卡著了。 一直在這個地方不動&#xff0c;如果停止就會報 Error:Could not run build action using Gradle distribution ‘https://services.gradle.org/distributions/gradle-4.1-all.zip‘. 所以直接就去看了下鏈接&#xff1a;https://dl.…

h.264 SODB RBSP EBSP的區別

SODB 數據比特串&#xff0d;&#xff0d;&#xff1e;最原始的編碼數據 RBSP 原始字節序列載荷&#xff0d;&#xff0d;&#xff1e;在SODB的后面填加了結尾比特&#xff08;RBSP trailing bits 一個bit“1”&#xff09;若干比特“0”,以便字節對齊。 EBSP 擴展字節序…

C# 控件置于最頂層、最底層、隱藏、顯示

控件置于最頂層、最底層 pictureBox1.BringToFront();//將控件放置所有控件最前端 pictureBox1.SendToBack();//將控件放置所有控件最底端 控件隱藏、顯示 pictureBox1.Visible true;//顯示 pictureBox1.Visible false;//隱藏

習題8.3.(1)

1 #include <iostream>2 #include <iomanip>3 #include <cstdlib>4 using namespace std;5 6 #define OK 17 #define ERROR 08 #define OVERFLOW -29 typedef int Status; //Status 是函數返回值類型&#xff0c;其值是函數結果狀態代碼。 10 11 typedef in…

python:實例化configparser模塊讀寫配置文件

之前的博客介紹過利用python的configparser模塊讀寫配置文件的基礎用法&#xff0c;這篇博客&#xff0c;介紹下如何實例化&#xff0c;方便作為公共類調用。 實例化的好處有很多&#xff0c;既方便調用&#xff0c;又降低了腳本的維護成本&#xff0c;而且提高了代碼的可讀性。…

halcon 圓環類缺陷檢測的一種方法(極坐標變換法)

目錄簡介極坐標變換定義原理Halcon中的極坐標變換1、polar_trans_image_ext算子用法與參數剖析2、polar_trans_region_inv算子用法與參數剖析圓環類缺陷檢測思路與步驟Halcon實例實例簡介程序解讀思路剖析應用實例1項目介紹處理程序處理效果應用實例2項目介紹處理程序處理效果簡…

linux的mount命令詳解

linux下掛載&#xff08;mount&#xff09;光盤鏡像文件、移動硬盤、U盤、Windows和NFS網絡共享 linux是一個優秀的開放源碼的操作系統&#xff0c;可以運行在大到巨型小到掌上型各類計算機系統上&#xff0c;隨著 linux系統的日漸成熟和穩定以及它開放源代碼特有的優越性&…

cat命令

$ cat file 顯示文件中的內容$ cat -n file 可以顯示文件的內容和行號$ cat -b file -b與-n類似&#xff0c;但只標識非空白行的行號$ cat -e file 在每一行的末尾顯示“$”字符&#xff0c;在需要將多行內容轉換成一行時非常有用。$ cat 只是接收標準輸入的內容并顯示&#xf…

生成驗證碼的流程分析.

瀏覽器解析頁面, 攜帶uuid向服務器發送請求獲取圖片, 服務器生成圖片驗證碼, 返回圖片本身給瀏覽器, 客戶端根據圖片輸入驗證碼內容, 把輸入的內容發送給服務器, 服務器對比輸入的驗證碼是否正確.根據前端傳入的uuid從redis中獲取唯一圖片驗證碼名稱. 服務器: 圖片, 圖片內容…

Halcon圖像增強方法與原理概述

目錄簡介Halcon算子與算法原理1.灰度線性變換a、scale_imageb、scale_image_maxc、invert_image2.灰度非線性變換a、log_imageb、exp_image3.圖像增強對比度與照明度a、emphasizeb、illuminate4.直方圖均衡化a、equ_histo_image5.灰度圖像形態學a、 gray_openingb、gray_closin…

指針類型轉換(轉)

當我們初始化一個指針或給一個指針賦值時&#xff0c;賦值號的左邊是一個指針&#xff0c;賦值號的右邊是一個指針表達式。在我們前面所舉的例子中&#xff0c;絕大多數情況下&#xff0c;指針的類型和指針表達式的類型是一樣的&#xff0c;指針所指向的類型和指針表達式所指向…

143. Reorder List

Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do this in-place without altering the nodes values. For example,Given {1,2,3,4}, reorder it to {1,4,2,3}. public void ReorderList(ListNode head) {if(h…

Halcon圖像濾波方法與原理概述

目錄簡介Halcon算子與算法原理基礎濾波a、均值濾波b、中值濾波c、高斯濾波d、導向濾波簡介 圖像濾波&#xff0c;即在盡量保留圖像細節特征的條件下對目標圖像的噪聲進行抑制&#xff0c;是圖像預處理中不可缺少的操作&#xff0c;其處理效果的好壞將直接影響到后續圖像處理和…

碎片化學習不是學習碎片,看這篇了解碎片化學習的真相

高效學習的定義&#xff1a;找到最適合自己的學習手法&#xff0c;在相對短的時間內集中注意力&#xff0c;以解決一個工作生活當中的難題為目的著手學習&#xff0c;你需要勤加練習&#xff0c;有時候還需要向名師求助。——許岑為什么會出現碎片化學習&#xff1f; 隨著科技的…

一篇能加深理解linux 虛擬文件系統的博文

URL: http://asionius.com/article/9 https://www.ibm.com/developerworks/cn/linux/l-vfs/轉載于:https://www.cnblogs.com/rocklee25/p/6926267.html

如何強制ffmpeg編碼時輸出一個關鍵幀

原文地址&#xff1a;http://www.ffmpeg.com.cn/index.php/%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6ffmpeg%E7%BC%96%E7%A0%81%E6%97%B6%E8%BE%93%E5%87%BA%E4%B8%80%E4%B8%AA%E5%85%B3%E9%94%AE%E5%B8%A7 如何強制ffmpeg編碼時輸出一個關鍵幀 AVCodecContext *c //編碼器環境句…