Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome 谷歌Chrome用户界面是如何工作的?_Google Chrome - Fatal编程技术网

Google chrome 谷歌Chrome用户界面是如何工作的?

Google chrome 谷歌Chrome用户界面是如何工作的?,google-chrome,Google Chrome,选项卡、按钮和Omnibox等自定义用户界面在所有平台上看起来都是相同的。这是如何实现的?似乎没有使用依赖于平台的UI。Chrome使用Skia。以下是一个示例(Gtk+3,开罗,斯基亚): 我认为这个问题可能是针对跨平台绘图库而不是GUI/WM的。 g_signal_connect(window_container_, "draw", G_CALLBACK(OnWindowContainerDraw), NULL); gboolean OnWindo

选项卡、按钮和Omnibox等自定义用户界面在所有平台上看起来都是相同的。这是如何实现的?似乎没有使用依赖于平台的UI。

Chrome使用Skia。以下是一个示例(Gtk+3,开罗,斯基亚):


我认为这个问题可能是针对跨平台绘图库而不是GUI/WM的。
  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;
}