Allegro zur Visuellen Darstellung mit C |
Matze84
Eroberer
Dabei seit: 14.10.2012
Beiträge: 73
|
|
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
|
|
02.01.2013 15:01 |
|
|
|
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 |
|
|
Matze84
Eroberer
Dabei seit: 14.10.2012
Beiträge: 73
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
Matze84
Eroberer
Dabei seit: 14.10.2012
Beiträge: 73
|
|
komisch....
nagut... ich werde dem demnächst mal auf den Grund gehen!
|
|
07.01.2013 18:59 |
|
|
|