Seite 1 von 1

Vordergrundfarbe CAIRO

Verfasst: Sa Mär 05, 2011 3:01 pm
von HUE
Hallo,

ich habe folgendes Programm aus dem Internet geladen, und es dann an meine Bedürfnisse angepasst. Doch ich bekomme keine schwarze Vordergrundfarbe für die Linien hin. Ich poste mal hier das Programm. Ich entwickle unter NetBSD 5.1. Doch dies dürfte nicht das Problem sein.

Code: Alles auswählen

#include <cairo.h>
#include <gtk/gtk.h>


static gboolean
on_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
	cairo_t *cr;

	cr = gdk_cairo_create(widget->window);

	cairo_set_source_rgb(cr,1,1,1);
	cairo_paint(cr);
	cairo_set_source_rgb(cr, 0, 0, 0);
	cairo_set_line_width (cr, 0.3);
	
	int i;
	for ( i = 1; i <= 16 ; i++) {
		cairo_move_to(cr, 10, 35 * i );
		cairo_line_to(cr, 10, 35 * i - 20 );
		cairo_move_to(cr, 10, 35 * i );
		cairo_line_to(cr, 790, 35 * i );
		cairo_stroke(cr);
	}

	cairo_destroy(cr);

	return FALSE;
}

int main (int argc, char *argv[])
{

  GtkWidget *window;

  gtk_init(&argc, &argv);
  
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
  gtk_widget_add_events (window, GDK_BUTTON_PRESS_MASK);

  g_signal_connect(window, "expose-event",
      G_CALLBACK(on_expose_event), NULL);
  g_signal_connect(window, "destroy",
      G_CALLBACK(gtk_main_quit), NULL);
 
//  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_window_set_title(GTK_WINDOW(window), "LA_II");
  gtk_window_set_default_size(GTK_WINDOW(window), 800, 600); 
  gtk_widget_set_app_paintable(window, TRUE);

  gtk_widget_show_all(window);

  gtk_main();

  return 0;
}
Hat jemand dazu eine Verbesserung? Die Linien sind in meiner Ausgabe am Bildschirm sehr blass, fast nicht sichtbar.

HUE \a

Re: Vordergrundfarbe CAIRO

Verfasst: Sa Mär 05, 2011 3:56 pm
von Xin
HUE hat geschrieben:Hallo,

ich habe folgendes Programm aus dem Internet geladen, und es dann an meine Bedürfnisse angepasst. Doch ich bekomme keine schwarze Vordergrundfarbe für die Linien hin. Ich poste mal hier das Programm. Ich entwickle unter NetBSD 5.1. Doch dies dürfte nicht das Problem sein.
Hat jemand dazu eine Verbesserung? Die Linien sind in meiner Ausgabe am Bildschirm sehr blass, fast nicht sichtbar.

HUE \a
Noch nie mit Cairo gearbeitet... aber wozu hat man das Wiki?
proggen.org Cairo-Tutorial hat geschrieben: ===== Farben und Flächen =====

FIXME
Suboptimal ^^ Da müssen wir wohl noch ran. ^^


Ich habe es mir mal angesehen, und mir fiel dann doch noch was auf:

Code: Alles auswählen

cairo_set_line_width (cr, 0.3);
Wenn Deine schwarze Linie einen weißen Pixel zu 30% bedeckt, dann kommt nunmal eine 30%iges Grau für den Pixel raus. Wenn Du die Linienstärke auf 1 setzt bekommst Du 100%iges schwarz.

Re: Vordergrundfarbe CAIRO

Verfasst: Sa Mär 05, 2011 4:18 pm
von HUE
Hallo,

leider habe ich keinen Erfolg mit der Strichstärke von 1. Die Farbe ist nun grau. In dem Tutorial für Cairo bei dem die Dreiecke gezeichnet werden sind schmale Linien auch schwarz. Leider habe ich die URL für das Beispiel vergessen.

MfG

HUE \a

Re: Vordergrundfarbe CAIRO

Verfasst: Sa Mär 05, 2011 4:31 pm
von HUE
Hallo,

ich habe das Problem gelöst bekommen, vielen Dank für Eure Mühen.

MfG

HUE \a

Re: Vordergrundfarbe CAIRO

Verfasst: Sa Mär 05, 2011 4:45 pm
von Xin
HUE hat geschrieben:Hallo, ich habe das Problem gelöst bekommen, vielen Dank für Eure Mühen.
Es wäre schön, wenn Du die Problemlösung kurz skizzieren kannst, denn irgendwann findet jemand mit dem gleichen Problem über google diesen Thread und liest dann 'Ich habe das Problem gelöst bekommen'... ^^

Re: Vordergrundfarbe CAIRO

Verfasst: Sa Mär 05, 2011 5:04 pm
von HUE
Hallo,

die Lösung: cairo_translate (cr, 0.5, 0.5);
Einbauen in den Event Handler.

Ein Dank geht an das Forum www.mikrocontroller.net.

MfG

HUE \a