网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月10日漏签0天
c4droid吧 关注:42,827贴子:262,825
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 13回复贴,共1页
<<返回c4droid吧
>0< 加载中...

【笙】学习贴吧SDL2.0触控,稍进阶

  • 只看楼主
  • 收藏

  • 回复
  • qkqpttgf
  • 大哲
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
本帖代码根据原帖【c4droid】【教程】SDL2.0实现触控方法,让屏幕跟随你的手指动起来 http://tieba.baidu.com/p/2682080782 改动。
原示例代码只是简单的示意了一下动作流跟屏幕坐标的用法。现在楼主来增改一下,增加1个显示文字的位置,然后最主要的是实现一下多点触控。
下面有些话带有强烈的主观理解,如理解方向有误,请指出。
   ——茫烟暗岭数回眸,柳絮杨花几度愁。


  • qkqpttgf
  • 大哲
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
sur = SDL_CreateRGBSurface(0, W, H, 32, 0, 0, 0, 0); // 用于画背景
sur1 = SDL_CreateRGBSurface(0, W, H, 32, 0, 0, 0, 0); // 用于画显示字的底色
SDL_FillRect(sur, NULL, 0xffacca);
// 在sur上画一个矩形
tex = SDL_CreateTextureFromSurface(ren, sur); // 把sur传递给tex
首先,为了区别整体背景跟字体显示区域,我做了两个surface,一个是粉色,一个绿色。
SDL_FillRect(sur1, NULL, 0x55ca00); // 绿底
tex1 = SDL_CreateTextureFromSurface(ren, sur1); // 把sur1传递给tex1
sur2 = TTF_RenderUTF8_Blended(font, c, color); // 让字符串生成surface表面并且传递给sur2
tex2 = SDL_CreateTextureFromSurface(ren, sur2);
做好后备用。
   ——茫烟暗岭数回眸,柳絮杨花几度愁。


2025-06-10 04:48:46
广告
  • qkqpttgf
  • 大哲
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
因为打算多次显示文字,所以把原帖显示的过程提出来做成函数。
int draw(SDL_Rect r, char *c) {
SDL_FillRect(sur1, NULL, 0x55ca00); // 绿底
tex1 = SDL_CreateTextureFromSurface(ren, sur1); // 把sur1传递给tex1
sur2 = TTF_RenderUTF8_Blended(font, c, color); // 让字符串生成surface表面并且传递给sur2
tex2 = SDL_CreateTextureFromSurface(ren, sur2);
SDL_FreeSurface(sur2);
SDL_RenderCopyEx(ren, tex1, NULL, &r, dg, NULL, SDL_FLIP_NONE); //
SDL_RenderCopyEx(ren, tex2, NULL, &r, dg, NULL, SDL_FLIP_NONE);
SDL_DestroyTexture(tex1);
SDL_DestroyTexture(tex2);
// 记得把tex都销毁,不然闪退
}
这里面的过程我理解一下,先把平面涂上颜色,然后把这块平板通过ren渲染做成电脑可以显示的编码,然后再弄到要显示的区域(以&首地址来寻找),这样一个东西就显示出来了。
我最后这个copy函数跟原帖不一样,因为是为等下转动做准备。
   ——茫烟暗岭数回眸,柳絮杨花几度愁。


  • qkqpttgf
  • 大哲
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
while (q == false) {
SDL_RenderClear(ren);
SDL_RenderCopy(ren, tex, NULL, NULL);//每次都先打粉底
sprintf(ch, "角度: %.3f 缩放: %.3f ", dg, dd);
// sprintf(ch, "X: %.3f Y: %.3f", W * x, H * y);
TTF_SizeUTF8(font, ch, &a, &b);
image.w = a;
image.h = b;
//省略x,y的处理。
draw(image, ch);
sprintf(ch, "X: %.3f Y: %.3f", W * x, H * y);
TTF_SizeUTF8(font, ch, &a, &b);
r.w = a * dd;//缩放
//省略x,y,w,h的处理,里面就是为了算中央点,让这个区域跟着手指移动
drow(r, ch);
// 刷新屏幕
SDL_RenderPresent(ren);
}
这个循环注意Render的一开始的清除跟最后的显示,我一开始放进那个函数,结果闪屏很明显,移出来就好了。
   ——水木逸清华,婉兮笙清扬。


  • qkqpttgf
  • 大哲
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
每次更改r这个区域的位置,就能跟着手指移动了,比起原示例,新人还是能有点成就感的~~~~以至于特意导成apk慢慢玩……
   ——水木逸清华,婉兮笙清扬。


  • qkqpttgf
  • 大哲
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
等下贴全代码。
   ——茫烟暗岭数回眸,柳絮杨花几度愁。


  • qkqpttgf
  • 大哲
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
没人看
   ——茫烟暗岭数回眸,柳絮杨花几度愁。


  • 我是_ID_
  • 孤独求败
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶


2025-06-10 04:42:46
广告
  • forcehappy
  • 大名鼎鼎
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶,收藏了


  • 简单aaaaaaa
  • 孤独求败
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶


  • 风逐流_
  • 外星人
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • zergzz7
  • 哈啰沃德
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶,学习


  • 不知道怎么做捏
  • 深坑
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 13回复贴,共1页
<<返回c4droid吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示