Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Allegro zur Visuellen Darstellung mit C » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Allegro zur Visuellen Darstellung mit C
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Allegro zur Visuellen Darstellung mit C Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo zusammen.....
Ich bin gerade dabei zu versuchen, mich ein bisschen mit Allegro zu beschäftigen. Allegro Wiki

Ich will "einfach" einen Roten Hintergrund und einen Grauen Querstrich. von oben links nach unten rechts machen.... Der ist natürlich abhängig von der Auflösung.

Meine Idee war, mir eine Farbe zu definieren mit:
code:
1:
2:
ALLEGRO_COLOR     Red=al_map_rgb(200,0,0);
ALLEGRO_COLOR   Grey=al_map_rgb(100,100,100);

damit ich nicht jedesmal, wenn etwas rot sein soll ich den gesamten Befehl eingeben muss
Außerdem habe ich mit die Bildschirmauflösung besorgt und mit
code:
1:
2:
3:
4:
ALLEGRO_DISPLAY MODE    display_data;
al_get_display_mode((al_get_num_display_modes()-1,&display_data);
im struct display_data gespeichert.

Dann komm ich an die Stelle wo Hintergrund und Kästchen "gemalt" werden sollen.
code:
1:
2:
3:
al_clear_to_color(Red); //Cleart den Screen und macht dann den Hintergrund in der Farbe die oben gesetzt wurde.
al_draw_filled_rectangle(0,0,display_data.width,display_data.height,Grey)

Der macht aber den Hintergrund schwarz und kein Rechteck.....
Wenn ich jeweils "Red" und "Grey" durch
code:
1:
al_map_rgb(x,x,x);
ersetze, dann macht er das.....

Wenn fragen sein sollte oder was nicht bekannt dann einfach fragen, dann poste ich das noch Augenzwinkern
02.01.2013 15:01 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich bin leider bei dem Versuch gescheitert, allegro in Visual Studio einzubinden.
Die Codeschnipsel zur Farbdefinition sehen aber richtig als (vgl hier)
Steht das alles in der selben Funktion?

Edit: habe es zum Laufen gebracht.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
#include <stdio.h>
#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>

int main(int argc, char **argv)
{
    ALLEGRO_DISPLAY *display = NULL;
	al_init();
	al_init_primitives_addon();
    display = al_create_display(640, 480);
	ALLEGRO_COLOR     Red=al_map_rgb(200,0,0);
	ALLEGRO_COLOR   Grey=al_map_rgb(100,100,100);
	al_clear_to_color(Red);
	al_draw_filled_rectangle(100, 100, 200,200, Grey);
	al_flip_display();
	getchar();
}

funktioniert bei mir.

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 04.01.2013 18:38.

04.01.2013 12:26 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

komisch bei mir geht das nicht...

könntest du sonst mal meinen Code testen?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
#include <stdio.h>
#include "conio.h"
#include <allegro5/allegro.h>
#include <allegro5/allegro_image.h>
#include <allegro5/allegro_primitives.h>
 
int main(int argc, char **argv){
 
   ALLEGRO_DISPLAY*			display = NULL;
   ALLEGRO_DISPLAY_MODE		display_data;
   ALLEGRO_DISPLAY_MODE		my_display;
   ALLEGRO_EVENT_QUEUE*		event_queue=NULL;
   ALLEGRO_EVENT			ev;
   ALLEGRO_TIMEOUT			timeout; 
   ALLEGRO_COLOR			color_Red=al_map_rgb(200,0,0);
   ALLEGRO_COLOR			color_Grey=al_map_rgb(100,100,100);

   if(!al_init()) {
		fprintf(stdout, "failed to initialize allegro!\n");
		return -1;
   }
   if(!al_init_image_addon()){
	   fprintf(stdout, "failed to initialize image_addon!\n");
	   return -1;
   }
   if(!al_init_primitives_addon()){
	   fprintf(stdout, "failed to initialize image_primitives!\n");
	   return -1;
   }
   al_get_display_mode((al_get_num_display_modes()-1),&display_data);
   al_get_display_mode((al_get_num_display_modes()-10),&my_display);
    fprintf(stdout,"Ihre momentane Bildschirmauflösung ist: %i x %i",display_data.width,display_data.height);
	fprintf(stdout,"Meine Lieblings-Bildschirmauflösung ist: %i x %i\n Daher werden wir auch ein Fenster mit dieser Auflösung erstellen.",my_display.width,my_display.height);
	puts("Bitte wählen Sie einen Modus aus, in dem das nächste Fenster erstellt werden soll.");
	puts("[1] Vollbildmodus\n[2] Fenstermodus");
	char auswahl=_getch();
	switch(auswahl){
		case '1':
			al_set_new_display_flags(ALLEGRO_FULLSCREEN);
			break;
		case '2':
			break;
		default:
			puts("Sie haben eine ungültige Auswahl getroffen!\nDaher nehme ich den \"Vollbildmodus\" an.");
			al_set_new_display_flags(ALLEGRO_FULLSCREEN);
			_getch();
	}
	display = al_create_display(my_display.width,my_display.height);
	if(!display) {
		fprintf(stdout, "failed to create display!\n");
		return -1;
	}
	al_set_window_title(display,"Testfenster");
	event_queue= al_create_event_queue();
	if(!event_queue){
		fprintf(stdout,"failed to create event queue!\n");
		al_destroy_display(display);
		return -1;
	}
	al_register_event_source(event_queue,al_get_display_event_source(display));
	al_clear_to_color(al_map_rgb(100,100,100));
	
   
	al_flip_display();
 
   while(1)
   {
		al_init_timeout(&timeout,0.06);
		bool get_event = al_wait_for_event_until(event_queue,&ev,&timeout);
		if(get_event&&ev.type==ALLEGRO_EVENT_DISPLAY_CLOSE){
			break;
		}
															/* UM DIESE BEIDEN ZEILEN HIER GEHT ES!!!!!*/
															al_clear_to_color(color_Red);
															al_draw_line(0,0,my_display.width,my_display.height,color_Red,10);
															//
		al_flip_display();
		if(auswahl!='2'){
			al_rest(25.0);
			break;
		}
   }

   al_destroy_event_queue(event_queue);
   al_rest(1.0);
   al_destroy_display(display);
 
   return 0;
}


Danke aber schon mal!
06.01.2013 01:01 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

1. Du verwendest zweimal color_Red - rot auf rot sieht man schlecht.
2.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
int main(int argc, char **argv){
 
   ALLEGRO_DISPLAY*			display = NULL;
   ALLEGRO_DISPLAY_MODE		display_data;
   ALLEGRO_DISPLAY_MODE		my_display;
   ALLEGRO_EVENT_QUEUE*		event_queue=NULL;
   ALLEGRO_EVENT			ev;
   ALLEGRO_TIMEOUT			timeout; 
//   ALLEGRO_COLOR			color_Red=al_map_rgb(200,0,0);
//   ALLEGRO_COLOR			color_Grey=al_map_rgb(100,100,100);

   if(!al_init()) {
		fprintf(stdout, "failed to initialize allegro!\n");
		return -1;
   }
   ALLEGRO_COLOR			color_Red=al_map_rgb(200,0,0);
   ALLEGRO_COLOR			color_Grey=al_map_rgb(100,100,100);

erst al_init(), dann die Farbdefinition (habe es beim zeilenweisen dubuggen gemerkt, da war geweils noch eine 0 bei den Farbwerten)

3."Ihre momentane Bildschirmaufl÷sung ist: 1440 x 900Meine Lieblings-Bildschirmaufl
÷sung ist: 1680 x 1050"
Das ist falsch, ich habe eine Auflösung von 2650*1440

__________________
Syntax Highlighting fürs Board (Link)
06.01.2013 13:58 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Erstmal DICKES DANKE!

Zitat:
Original von eulerscheZahl
1. Du verwendest zweimal color_Red - rot auf rot sieht man schlecht.

Stimmt, habs vergessen zurück zu ändern... sollte eigentlich rot auf grau sein! egal.
Zitat:

erst al_init(), dann die Farbdefinition (habe es beim zeilenweisen dubuggen gemerkt, da war geweils noch eine 0 bei den Farbwerten)

ok das erklärt dann, warum das "bild" schwarz war.
Zitat:

3."Ihre momentane Bildschirmaufl÷sung ist: 1440 x 900Meine Lieblings-Bildschirmaufl
÷sung ist: 1680 x 1050"
Das ist falsch, ich habe eine Auflösung von 2650*1440

Sehr merkwürdig... aber gut das das mal jmd getestet hat/gesehen hat Augenzwinkern


DANKE DANKE DANKE

PS: obwohl es mich doch stark wundert, das "meine Lieblingsauflösung" größer ist als deine angebliche.....
Das soll so eigentlich nicht sein... aber gut... mal schauen!

EDIT: Hast du einen 2ten Bildschirm(den du als Hauptschirm benutzt), der eine andere Auflösung unterstützt???

WEIL: ich hab eigentlich nur 1440x900 und nen 2ten Schirm (Hauptschirm) mit 1920x1080 dran!
In dem Fenster startet auch das Programm... und er sagt mir, das ich angeblich 1920x1080 hätte..... Was gemäß Systemeinstellungen aber nicht simmt Augenzwinkern

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Matze84: 07.01.2013 08:19.

07.01.2013 08:08 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von Matze84
Hast du einen 2ten Bildschirm(den du als Hauptschirm benutzt), der eine andere Auflösung unterstützt???

Nein, ich habe nur einen Monitor angeschlossen (Samsung SyncMaster SA850).

__________________
Syntax Highlighting fürs Board (Link)
07.01.2013 14:46 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

komisch....
nagut... ich werde dem demnächst mal auf den Grund gehen!
07.01.2013 18:59 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Allegro zur Visuellen Darstellung mit C