当前位置:网站首页>GTK在drawable区域绘图
GTK在drawable区域绘图
2022-07-29 21:24:00 【百口可乐__】
gtk不使用cairo库的绘图方式:
#include <gtk/gtk.h>
static gboolean on_expose(GtkWidget *drawArea,GdkEventExpose *event,gpointer data)
{
GdkGC *gc_0, *gc_1, *gc_2;
GdkColor color;
gc_0 = gdk_gc_new(drawArea->window);
color.red = 0;
color.green = 30000;
color.blue = 0;
gdk_gc_set_rgb_fg_color( gc_0, &color );
gc_1= gdk_gc_new( drawArea->window );
color.red = 65535;
color.green = 0;
color.blue = 65535;
gdk_gc_set_rgb_fg_color( gc_1, &color );
gc_2= gdk_gc_new( drawArea->window );
color.red = 0;
color.green = 65522;
color.blue = 33333;
gdk_gc_set_rgb_fg_color( gc_2, &color );
//画矩形
gdk_draw_rectangle( drawArea->window,gc_0,TRUE,5, 5, 100, 100 );
//画圆弧
gdk_draw_arc( drawArea->window,gc_1,FALSE, 150, 50, 100, 100, 0, 64*180);
//写字
PangoLayout *layout = gtk_widget_create_pango_layout( drawArea, "hello world!" );
PangoFontDescription *fontdesc = pango_font_description_from_string( "Comic Sans 24" );
pango_layout_set_font_description( layout, fontdesc );
gdk_draw_layout( drawArea->window,gc_2,50, 150, layout );
//释放资源
pango_font_description_free( fontdesc );
g_object_unref( layout );
g_object_unref( G_OBJECT(gc_0) );
g_object_unref( G_OBJECT(gc_1) );
return TRUE;
}
int main(int argc,char *argv[])
{
GtkWidget *window;
GtkWidget *drawArea;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Center");
gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
drawArea = gtk_drawing_area_new();
gtk_widget_set_size_request(drawArea, 300, 200);
gtk_container_add(GTK_CONTAINER(window), drawArea);
g_signal_connect(drawArea, "expose_event",G_CALLBACK(on_expose), NULL);
g_signal_connect_swapped(G_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
效果:
参考:
gtk画矩形
边栏推荐
猜你喜欢
随机推荐
Chrome浏览器打印flash log
OPEN数据 | 新库上线 | CnOpenDataA股上市公司社会责任报告数据
spyder打不开解决方案
微信小程序如何开通支付功能?
一文理解分布式开发中的服务治理
GBASE 8s 通过临时表提升排序性能
Writing Elegant Kotlin Code: Talk About What I Think "Kotlinic"
Qualcomm WLAN framework learning (31) -- Power save
GBASE 8s 自定义存储过程和函数示例
bright day
SwiftUI CoreData 教程之如何加速搜索速度
容器网络硬核技术内幕 (22) 安全与自由兼顾
GBASE 8s 如何并行执行update statistics
全系都更换带T四缸,安全、舒适一个不落
INFTnews | Forbes Web3 exploration
Panorama Tutorial丨How to shoot sunrise and sunset scenes in VR panoramic shooting?
容器网络硬核技术内幕 (小结-下)
【无标题】
install mysql using script
SwiftUI Apple App Store 发布App的初学者完整指南









