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

Informatiker Board » Themengebiete » Praktische Informatik » Allegro zur Visuellen Darstellung mit C » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 7 Beiträge
Matze84

komisch....
nagut... ich werde dem demnächst mal auf den Grund gehen!
eulerscheZahl

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).
Matze84

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
eulerscheZahl

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
Matze84

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!
eulerscheZahl

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.
Matze84 Allegro zur Visuellen Darstellung mit C

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