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