Vordergrundfarbe CAIRO

z.B. wxWidgets, GTK+, Qt, OpenGL, DirectX
Antworten
HUE
Beiträge: 6
Registriert: Sa Mär 05, 2011 2:54 pm

Vordergrundfarbe CAIRO

Beitrag von HUE » Sa Mär 05, 2011 3:01 pm

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

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8721
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Vordergrundfarbe CAIRO

Beitrag von Xin » Sa Mär 05, 2011 3:56 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

HUE
Beiträge: 6
Registriert: Sa Mär 05, 2011 2:54 pm

Re: Vordergrundfarbe CAIRO

Beitrag von HUE » Sa Mär 05, 2011 4:18 pm

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

HUE
Beiträge: 6
Registriert: Sa Mär 05, 2011 2:54 pm

Re: Vordergrundfarbe CAIRO

Beitrag von HUE » Sa Mär 05, 2011 4:31 pm

Hallo,

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

MfG

HUE \a

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8721
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Vordergrundfarbe CAIRO

Beitrag von Xin » Sa Mär 05, 2011 4:45 pm

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'... ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

HUE
Beiträge: 6
Registriert: Sa Mär 05, 2011 2:54 pm

Re: Vordergrundfarbe CAIRO

Beitrag von HUE » Sa Mär 05, 2011 5:04 pm

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

Antworten