2013-01-09 34 views
3

自定義用戶界面,如選項卡,按鈕和Omnibox在所有平臺上都是相同的。這是如何實現的?它似乎並不像平臺相關的用戶界面。Google Chrome用戶界面如何工作?

+0

可能重複[?哪個GUI庫沒有谷歌瀏覽器使用(http://stackoverflow.com/questions/874609/which-gui-library -does-google-chrome-use) –

+0

我認爲這個問題是針對跨平臺繪圖庫而不是GUI/WM。 – brooksbp

回答

0

Chrome使用Skia。下面是一個例子(GTK + 3,開羅,Skia的):

g_signal_connect(window_container_, "draw", 
        G_CALLBACK(OnWindowContainerDraw), NULL); 

gboolean OnWindowContainerDraw(GtkWidget* widget, 
           cairo_t *cr) {     
    SkBitmap bitmap; 
    bitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100); 
    bitmap.allocPixels(); 

    SkDevice device(bitmap); 
    SkCanvas canvas(&device); 
    SkPaint paint; 
    SkRect r; 

    paint.setARGB(255, 255, 255, 255); 
    r.set(10, 10, 20, 20); 
    canvas.drawRect(r, paint); 

    cairo_surface_t* surface = cairo_image_surface_create_for_data(
     (unsigned char*)bitmap.getPixels(), CAIRO_FORMAT_ARGB32, 
     bitmap.width(), bitmap.height(), bitmap.rowBytes()); 
    cairo_surface_mark_dirty(surface); 
    cairo_set_source_surface(cr, surface, 0, 0); 
    cairo_paint(cr); 

    return FALSE; 
}