在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SDL顯示文本

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-09-29 16:32 ? 次閱讀

SDL顯示文本

?? SDL2.0庫(kù)本身沒有文本數(shù)據(jù)顯示相關(guān)函數(shù)接口,文本顯示需要編譯安裝SDL_ttf庫(kù)。

1.編譯安裝SDL2_ttf庫(kù)

SDL_ttf下載地址:SDL_ttf
??(1)將下載的SDL2-2.0.14.tar.gz壓縮包拷貝至虛擬機(jī)解壓。

[wbyq@wbyq src_pack]$ tar xvf /mnt/hgfs/ubuntu/software_pack/SDL2_ttf-2.0.15.tar.gz 

(2)配置編譯安裝路徑。

[wbyq@wbyq SDL2_ttf-2.0.15]$ ./autogen.sh 
[wbyq@wbyq SDL2_ttf-2.0.15]$ ./configure --prefix=$PWD/_install
[wbyq@wbyq SDL2_ttf-2.0.15]$ make && make install 

(3)編譯成功生成文文件。

[wbyq@wbyq _install]$ tree
.
├── include
│   └── SDL2
│       ├── freetype.h
│       └── SDL_ttf.h
└── lib
    ├── libSDL2_ttf-2.0.so.0 -> libSDL2_ttf-2.0.so.0.14.1
    ├── libSDL2_ttf-2.0.so.0.14.1
    ├── libSDL2_ttf.a
    ├── libSDL2_ttf.la
    ├── libSDL2_ttf.so -> libSDL2_ttf-2.0.so.0.14.1
    └── pkgconfig
        └── SDL2_ttf.pc

4 directories, 8 files

2.增加設(shè)置字體大小函數(shù)

??SDL2_ttf庫(kù)中提供函數(shù)沒有單獨(dú)提供設(shè)置字體大小函數(shù),為了方便設(shè)置字體大小,修改SDL_ttf.c文件,增加設(shè)置字體大小函數(shù)。

[wbyq@wbyq SDL2_ttf-2.0.15]$ gedit SDL_ttf.c +2135
void TTF_SetFontSize(TTF_Font *font,int ptsize)
{
	FT_Fixed scale;
	FT_Error error;
	FT_Face face;
	face = font->face;
	/* Make sure that our font face is scalable (global metrics) */
	if ( FT_IS_SCALABLE(face) ) {
	  	/* Set the character size and use default DPI (72) */
	  	error = FT_Set_Char_Size( font->face, 0, ptsize * 64, 0, 0 );
			if( error ) {
	    	TTF_SetFTError( "Couldn't set font size", error );
	    	TTF_CloseFont( font );
	    	return ;
	  }
	  /* Get the scalable font metrics for this font */
	  scale = face->size->metrics.y_scale;
	  font->ascent  = FT_CEIL(FT_MulFix(face->ascender, scale));
	  font->descent = FT_CEIL(FT_MulFix(face->descender, scale));
	  font->height  = font->ascent - font->descent + /* baseline */ 1;
	  font->lineskip = FT_CEIL(FT_MulFix(face->height, scale));
	  font->underline_offset = FT_FLOOR(FT_MulFix(face->underline_position, scale));
	  font->underline_height = FT_FLOOR(FT_MulFix(face->underline_thickness, scale));
	} else {
		/* Non-scalable font case.  ptsize determines which family
		 * or series of fonts to grab from the non-scalable format.
		 * It is not the point size of the font.
		 * */
		if ( ptsize >= font->face->num_fixed_sizes )
			ptsize = font->face->num_fixed_sizes - 1;
		font->font_size_family = ptsize;
		error = FT_Set_Pixel_Sizes( face,
				face->available_sizes[ptsize].height,
				face->available_sizes[ptsize].width );
	  	/* With non-scalale fonts, Freetype2 likes to fill many of the
		 * font metrics with the value of 0.  The size of the
		 * non-scalable fonts must be determined differently
		 * or sometimes cannot be determined.
		 * */
	  	font->ascent = face->available_sizes[ptsize].height;
	  	font->descent = 0;
	  	font->height = face->available_sizes[ptsize].height;
	  	font->lineskip = FT_CEIL(font->ascent);
	  	font->underline_offset = FT_FLOOR(face->underline_position);
	  	font->underline_height = FT_FLOOR(face->underline_thickness);
	}
	if ( font->underline_height < 1 ) {
		font->underline_height = 1;
	}
	font->glyph_italics *= font->height;
	Flush_Cache(font); //這個(gè)非常重要
}
watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASVRf6Zi_5rC0,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

??在sdl_ttf.h中聲明函數(shù)

[wbyq@wbyq SDL2_ttf-2.0.15]$ gedit SDL_ttf.h +291
extern void TTF_SetFontSize(TTF_Font *font,int ptsize);/*設(shè)置字體大小*/

3.SDL文本顯示

#include 
#include 
#include 
#define WINDOW_W 800
#define WINDOW_H 480
int main(int argc,char *argv[])
{
	/*SDL初始化*/
	SDL_Init(SDL_INIT_VIDEO);
	/*TTF初始化*/
	TTF_Init();
	/*創(chuàng)建窗口*/
	SDL_Window *window=SDL_CreateWindow("SDL SHOW TEXT",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,WINDOW_W,WINDOW_H,SDL_WINDOW_SHOWN	);
	/*創(chuàng)建渲染器*/
	SDL_Renderer *render=SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED);
	/*設(shè)置渲染器顏色*/
	SDL_SetRenderDrawColor(render, 255, 255, 255, 255);
	/*清空渲染器*/
	SDL_RenderClear(render);
	/*打開字庫(kù)*/
	TTF_Font *ttffont=TTF_OpenFont("simkai.ttf",50);
	if(ttffont==NULL)
	{
		printf("simkai.ttf open failedn");
		return 0;
	}
	
	SDL_Color color={52,203,120,255};/*字體顏色RGBA*/
	
	/*創(chuàng)建字體顯示表面*/
	SDL_Surface *text1_surface=TTF_RenderUTF8_Blended(ttffont,"hello,world!",color);
	/*創(chuàng)建紋理*/
	SDL_Texture * texture=SDL_CreateTextureFromSurface(render,text1_surface);
	/*將surface拷貝到渲染器*/
	SDL_Rect dstrect;
	dstrect.x=WINDOW_W/2-text1_surface->w/2;/*顯示的起始位置*/
	dstrect.y=100;/*顯示的起始位置*/
	dstrect.w=text1_surface->w;/*顯示的寬度*/
	dstrect.h=text1_surface->h;/*顯示的高度*/
	SDL_RenderCopy(render,texture,NULL,&dstrect);
	SDL_FreeSurface(text1_surface);/*釋放surface*/
	SDL_DestroyTexture(texture);/*釋放紋理*/

	/*設(shè)置字體大小*/
	TTF_SetFontSize(ttffont,60);
	/*字體加粗*/
	TTF_SetFontStyle(ttffont,TTF_STYLE_BOLD);
	/*創(chuàng)建字體顯示表面*/
	text1_surface=TTF_RenderUTF8_Blended(ttffont,"北京萬邦易嵌科技有限公司",color);
	/*創(chuàng)建紋理*/
	texture=SDL_CreateTextureFromSurface(render,text1_surface);
	/*將surface拷貝到渲染器*/
	dstrect.x=WINDOW_W/2-text1_surface->w/2;/*顯示的起始位置*/
	dstrect.y=160;/*顯示的起始位置*/
	dstrect.w=text1_surface->w;/*顯示的寬度*/
	dstrect.h=text1_surface->h;/*顯示的高度*/
	SDL_RenderCopy(render,texture,NULL,&dstrect);
	SDL_FreeSurface(text1_surface);/*釋放surface*/
	SDL_DestroyTexture(texture);/*釋放紋理*/
	/*正常字體*/
	TTF_SetFontStyle(ttffont,TTF_STYLE_NORMAL);
	/*創(chuàng)建字體顯示表面*/
	text1_surface=TTF_RenderUTF8_Blended(ttffont,"www.wanbangee.com",color);
	/*創(chuàng)建紋理*/
	texture=SDL_CreateTextureFromSurface(render,text1_surface);
	/*將surface拷貝到渲染器*/
	dstrect.x=WINDOW_W/2-text1_surface->w/2;/*顯示的起始位置*/
	dstrect.y=230;/*顯示的起始位置*/
	dstrect.w=text1_surface->w;/*顯示的寬度*/
	dstrect.h=text1_surface->h;/*顯示的高度*/
	SDL_RenderCopy(render,texture,NULL,&dstrect);
	SDL_FreeSurface(text1_surface);/*釋放surface*/
	SDL_DestroyTexture(texture);/*釋放紋理*/

	/*正常字體*/
	TTF_SetFontStyle(ttffont,TTF_STYLE_NORMAL);
	/*創(chuàng)建字體顯示表面*/
	text1_surface=TTF_RenderUTF8_Blended(ttffont,"SDL_ttf庫(kù)顯示測(cè)試示例!",color);
	/*創(chuàng)建紋理*/
	texture=SDL_CreateTextureFromSurface(render,text1_surface);
	/*將surface拷貝到渲染器*/
	dstrect.x=WINDOW_W/2-text1_surface->w/2;/*顯示的起始位置*/
	dstrect.y=300;/*顯示的起始位置*/
	dstrect.w=text1_surface->w;/*顯示的寬度*/
	dstrect.h=text1_surface->h;/*顯示的高度*/
	SDL_RenderCopy(render,texture,NULL,&dstrect);
	SDL_FreeSurface(text1_surface);/*釋放surface*/
	SDL_DestroyTexture(texture);/*釋放紋理*/
	SDL_RenderPresent(render);/*刷新顯示*/
	SDL_Event event;
	while(1)
	{
		if(SDL_PollEvent(&event))/*獲取事件*/
		{
			if(event.type==SDL_QUIT)break;
		}
	}
	TTF_CloseFont(ttffont);/*關(guān)閉字庫(kù)*/
	TTF_Quit();/*關(guān)閉ttf*/
	SDL_DestroyRenderer(render);/*注銷渲染器*/
	SDL_DestroyWindow(window);/*注銷窗口*/
	SDL_Quit();
	return 0;
}

4.Makefile文件

CFLAGS =-I/home/wbyq/src_pack/SDL2-2.0.14/_install/include -I/home/wbyq/src_pack/SDL2-2.0.14/_install/include/SDL2 -L/home/wbyq/src_pack/SDL2-2.0.14/_install/lib
CFLAGS +=-L/home/wbyq/src_pack/SDL2_image-2.0.5/_install/lib -I/home/wbyq/src_pack/SDL2_image-2.0.5/_install/include -I/home/wbyq/src_pack/SDL2_image-2.0.5/_install/include/SDL2

CFLAGS +=-I/home/wbyq/src_pack/SDL2_ttf-2.0.15/_install/include/SDL2 -L/home/wbyq/src_pack/SDL2_ttf-2.0.15/_install/lib
CFLAGS+=-lSDL2 -lpthread -lm -ldl -lSDL2_image -lSDL2_ttf
app:
	gcc sdl_test.c  $(CFLAGS)

5.運(yùn)行效果

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASVRf6Zi_5rC0,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    673

    瀏覽量

    33473
  • SDL
    SDL
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    7582
  • Makefile
    +關(guān)注

    關(guān)注

    1

    文章

    125

    瀏覽量

    19459
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SDL編譯安裝圖片顯示

    ?SDL(Simple DirectMediaLayer)是一套開放源代碼的跨平臺(tái)多媒體開發(fā)庫(kù),使用C語言寫成。SDL提供了數(shù)種控制圖像、聲音、輸出入的函數(shù),讓開發(fā)者只要用相同或是相似的代碼就可以
    的頭像 發(fā)表于 09-29 15:54 ?1663次閱讀
    <b class='flag-5'>SDL</b>編譯安裝圖片<b class='flag-5'>顯示</b>

    SDL時(shí)間和天氣顯示

    ?SDL(Simple DirectMediaLayer)是一套開放源代碼的跨平臺(tái)多媒體開發(fā)庫(kù),使用C語言寫成。SDL提供了數(shù)種控制圖像、聲音、輸出入的函數(shù),讓開發(fā)者只要用相同或是相似的代碼就可以
    的頭像 發(fā)表于 12-08 14:15 ?1388次閱讀

    Linux下基于SDL庫(kù)貪吃蛇游戲

    ?SDL(Simple DirectMediaLayer)是一套開放源代碼的跨平臺(tái)多媒體開發(fā)庫(kù),使用C語言寫成。SDL提供了數(shù)種控制圖像、聲音、輸出入的函數(shù),讓開發(fā)者只要用相同或是相似的代碼就可以
    的頭像 發(fā)表于 12-11 14:29 ?3671次閱讀
    Linux下基于<b class='flag-5'>SDL</b>庫(kù)貪吃蛇游戲

    Windows下基于MSVC搭建SDL開發(fā)環(huán)境

    Windows下基于MSVC搭建SDL開發(fā)環(huán)境
    的頭像 發(fā)表于 06-08 10:29 ?1807次閱讀
    Windows下基于MSVC搭建<b class='flag-5'>SDL</b>開發(fā)環(huán)境

    文本顯示問題

    請(qǐng)問各位高手,我編寫了一個(gè)文本顯示界面,顯示多行數(shù)據(jù),請(qǐng)問我如何選定某一行,刪除某一行,在某一行后面在增加一行,要實(shí)現(xiàn)這些功能,用文本顯示
    發(fā)表于 04-24 12:31

    SDL的交叉編譯問題

    求助!!移植SDL到mini2440開發(fā)板上時(shí),在交叉編譯SDL_image進(jìn)行configure之后,再make時(shí)出現(xiàn)如下錯(cuò)誤:/opt/mini2440/output/lib/libSDL.so
    發(fā)表于 12-06 20:50

    移植SDL到JZ2440顯示BMP圖片

    LOGO的制作, 韋老師第3期講了如何顯示jpeg圖片, 那么怎么顯示bmp圖片?這次我們借助libSDL來實(shí)現(xiàn),我們先移植SDL到Ubuntu, 體驗(yàn)它的威力后再移植到開發(fā)板。一、移植SDL
    發(fā)表于 06-29 11:19

    如何對(duì)基于ART-Pi-smart開發(fā)板的SDL進(jìn)行測(cè)試

    入ART-Pi-smar在的目錄`gedit userapps/gnu-apps/sdl/build_sdl.sh此時(shí)在重新執(zhí)行一下按照那個(gè)大佬的文章,里面關(guān)于makefile腳本的那一段,在鏈接庫(kù)的時(shí)候少鏈接了sdl
    發(fā)表于 06-28 14:21

    【飛凌RK3588開發(fā)板試用】基于SDL進(jìn)行GUI程序開發(fā)

    相關(guān)的應(yīng)用開發(fā)。通過加載位圖顯示的Demo來演示。 構(gòu)建 下載源碼https://github.com/libsdl-org/SDL/releases/ https://github.com
    發(fā)表于 04-06 15:30

    GUI向?qū)Ь幾g錯(cuò)誤,找不到“SDL2/SDL.h”文件是怎么回事?

    如何找出編譯錯(cuò)誤:找不到“SDL2/SDL.h”文件 使用 MAC OS 12.6 和最新的guy guider 版本。
    發(fā)表于 05-04 08:44

    基于SDL的自動(dòng)售票系統(tǒng)的研發(fā)

    基于SDL 的自動(dòng)售票系統(tǒng)的研發(fā)顧麗麗 梅杓春(南京郵電大學(xué)自動(dòng)化學(xué)院,江蘇南京 210003)摘要:本文簡(jiǎn)要介紹了SDL語言及其支持工具。通過設(shè)計(jì)自動(dòng)售票系統(tǒng)實(shí)例對(duì)如何利用SDL
    發(fā)表于 12-18 11:34 ?21次下載

    最新TOD文本顯示中文畫面組態(tài)軟件

    最新TOD文本顯示中文畫面組態(tài)軟件
    發(fā)表于 11-29 16:49 ?27次下載
    最新TOD<b class='flag-5'>文本</b><b class='flag-5'>顯示</b>中文畫面組態(tài)軟件

    SDL1000X系列可編程直流電子負(fù)載的產(chǎn)品介紹

    SDL1000X/SDL1000X-E 可編程直流電子負(fù)載配備了3.5 英寸 TFT-LCD 顯示屏,擁有友好的人機(jī)交互界面和優(yōu)異的性能指標(biāo),SDL1020X/
    發(fā)表于 02-18 08:00 ?4次下載
    <b class='flag-5'>SDL</b>1000X系列可編程直流電子負(fù)載的產(chǎn)品介紹

    SDL下載與配置

    點(diǎn)擊[SDL2 核心庫(kù)下載](https://libsdl.org/download-2.0.php)下載SDL2庫(kù),如下圖根據(jù)編譯器選擇不同版本(Visual Studo系列選擇第一個(gè))。
    的頭像 發(fā)表于 02-27 14:51 ?4912次閱讀
    <b class='flag-5'>SDL</b>下載與配置

    串口屏LUA教程1-如何顯示文本

    串口屏LUA教程1-如何顯示文本
    發(fā)表于 04-29 13:04 ?6次下載
    主站蜘蛛池模板: 狠狠色狠狠色综合日日不卡 | 222在线视频免费观看 | 亚洲视频天天射 | 欧美一级在线观看播放 | 国产精品入口免费视频 | 奇米777me| 日本久久综合视频 | 午夜影院普通 | 成人在线播放av | 加勒比一本大道香蕉在线视频 | 正在播放91大神调教偷偷 | 黄色小毛片 | 精品视频卡1卡2卡3 精品视频免费看 | 日本高清免费aaaaa大片视频 | 亚洲一区小说区中文字幕 | 真爽~张开腿~让我插 | 色综合精品 | 一级a毛片免费观看 | 九九久久九九久久 | 日本xxxxxxxxx69 | 牛牛碰在线视频 | 男人午夜禁片在线观看 | 四虎黄色片 | 男女爱爱免费视频 | 伊人网在线视频观看 | 久久久久大香线焦 | 777国产精品永久免费观看 | 丁香六月激情综合 | 性喷潮久久久久久久久 | 日本高清不卡视频 | yyy6080韩国三级理论 | 午夜精品视频在线观看 | 午夜激情福利 | 另类free性欧美护士 | 亚洲国产成人久久精品图片 | 国产精品va在线观看不 | 欧美日韩影院 | 久久视频精品36线视频在线观看 | 日韩亚洲人成在线综合 | 国模久久 | 亚洲欧美v视色一区二区 |