3

タブ、ボタン、Omniboxなどのカスタムユーザーインターフェイスは、すべてのプラットフォームで同じように見えます。これはどのように達成されますか?プラットフォームに依存するUIが使用されているようには見えません。

4

1 に答える 1

0

ChromeはSkiaを使用しています。次に例を示します(Gtk + 3、cairo、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;
}
于 2013-04-16T21:39:11.193 に答える