[ Príspevkov: 9 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5 | 5
NapísalOffline : 06.07.2011 17:58 | c++/Linux poradit kniznice

Potreboval by som mensiu radu co by ma usmernila. Potreboval by som spravit mensi program a kedze nie som ziaden programator, viem vacsinou iba zaklady, tak neviem presne ako by som s tym programom zacal. Neviem co je na to najviac vhodne.
popis programu:
Mam pole napr. 1000x1000 v ktorom su napr. iba dve hodnoty. Ja potrebujem toto pole graficky zobrazit ako stvorceky roznych farieb [napr. 0--> modra 1-->cerverna], potom ako na dany stvorcek kliknem tak my mal zmenit farbu napr. z modrej na cervenu.
Znie to ako prkotina ale ked sa clovek nevyzna tak aj take nieco vie byt tazke :). Skusal som to v GTK+ pomocou elementu gtk_event_box, aj to fungovalo, lenze ak pouzijem pole velke napr. 1000x1000 tak sa okno programu neotvori ani po 10min. Cize tymto sposob to asi nedocielim. Co teda pouzit ?

Vopred dakujem za akukolvek radu,

// pridané po 1 minúte od posledného príspevku

Zabudol som dodat, vsetko robim v Linuxe a c++.


Offline

Skúsený užívateľ
Skúsený užívateľ
c++/Linux  poradit kniznice

Registrovaný: 11.01.09
Prihlásený: 26.01.18
Príspevky: 1290
Témy: 9 | 9
Bydlisko: HE
NapísalOffline : 06.07.2011 22:43 | c++/Linux poradit kniznice

Napis sem kod, ktory si skusal, lebo neviem si presne predstavit, co konkretne a ako to robis. Potom ti viac dokazeme pomoct.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5 | 5
Napísal autor témyOffline : 07.07.2011 0:11 | c++/Linux poradit kniznice

Zacal som to robit, ale ked som zistil, ze ak zadam pole 1000x1000 tak mi to uz nezobrazi okno, tak som s tym prestal, takze v kode je len cast kde chcem zobrazit okno s tymi elementami. Cize tento kod je len test ci by to slo, no a neide to. Je to asi prilis vela elementov. Preto hladam neaky iny sposob, ako zobrazit take mnozstvo dat a potom ich aj moct upravit a ulozit. mozno nieco ako graficky editor ale len s dvoma farbami :), napr. kazdy pixel by predstavoval jeden bod v mojej matici.

Kód:
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <string.h>

#include <gtk/gtk.h>

using namespace std;



struct block {

    GtkWidget * block;
    gint value;
};
struct block *map;

gint width;
gint height;

gint block_size;

GtkWidget *window;
GtkWidget *vbox;





 

void button_press_callback (GtkWidget *widget, gpointer *index){

}

void button_release_callback (GtkWidget *widget, gpointer *index){

}

void test(){
   gint i, a, b, sirka, vyska;
   GtkWidget  *hbox;

   sirka=1000;
   vyska=1000;
   vbox=gtk_vbox_new(0,0);
   g_free (map);
       map = (struct block *)g_malloc0(sizeof(struct block) * sirka * vyska);

       i=0;
       for(a=0;a<sirka; a++){
          hbox = gtk_hbox_new (0, 0);
          for(b=0;b<vyska;b++){
             GtkWidget *image;
             map[i].block = gtk_event_box_new ();
             image=gtk_image_new_from_file("./Resources/red.png");

 
                  gtk_widget_set_usize (map[i].block, block_size, block_size);
                  if((a%2)==0 && (b%2)==0)
                  gtk_container_add (GTK_CONTAINER (map[i].block), image);

                  g_signal_connect (G_OBJECT (map[i].block), "button_press_event",   G_CALLBACK (button_press_callback),   (gpointer)i);
                  g_signal_connect (G_OBJECT (map[i].block), "button_release_event", G_CALLBACK (button_release_callback), (gpointer)i);

                  gtk_box_pack_start (GTK_BOX (hbox), map[i].block, FALSE, FALSE, 0);

 
          
          
             i++;
          }
      gtk_box_pack_start(GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
       }
       
       gtk_container_add(GTK_CONTAINER(window),vbox);
       
       gtk_widget_show_all (vbox);
   
   


}








int main(int argc, char* argv[]){

   gtk_init(&argc, &argv);
   


   
   window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
   
   g_signal_connect(window, "delete_event", G_CALLBACK(gtk_main_quit), NULL);
   
   block_size=1;

   test();

   gtk_widget_show(window);

   gtk_main();
   g_free (map);
   return 0;
}


Offline

Skúsený užívateľ
Skúsený užívateľ
c++/Linux  poradit kniznice

Registrovaný: 11.01.09
Prihlásený: 26.01.18
Príspevky: 1290
Témy: 9 | 9
Bydlisko: HE
NapísalOffline : 07.07.2011 19:43 | c++/Linux poradit kniznice

Pri takom velkom pocte grafickych prvkov necakaj zazraky, aj ked nemas najslabsi PC. GTK neovladam, ale ja by som to riesil skor nejakym platnom, image-om. Vykreslis si obycajny image o velkosti 1000x1000 pixelov a osetris udalost kliknutia na tento image. Potom pixel, na ktorej pozicii bol kurzor prekreslis na inu farbu.
Toto riesenie ti nezoberie takmer ziaden procesorovy cas a aplikacia ti nezatuhne. Jedine, co by ti snad mohlo prekazat je, ze ak potrebujes nejake medzery medzi stvorcekmi, potom by to nebolo vhodne riesenie.


Offline

Užívateľ
Užívateľ
c++/Linux  poradit kniznice

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22 | 22
Bydlisko: Zilinska Un...
NapísalOffline : 07.07.2011 23:40 | c++/Linux poradit kniznice

Ja tiez neovladam GTK, ale data 1000x1000 su spracovatelne v realnom case na normalnom PC, nie je to nic hrozne, takze si mal nieco zle. Ja by som na to pouzil OpenGL, ale ako zaciatocnikovi by ti to dlho trvalo. Robil som v MFC, tam som si vykreslil bimapu a klikal na pixely a farbil a potom ju stiahol, nic narocne.

Okrajovo som si vsimol toto volanie:

image=gtk_image_new_from_file("./Resources/red.png");

V realtime v slucke? blaznis? 1000000 krat v jednej sluscke realtimu alokujes?


_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5 | 5
Napísal autor témyOffline : 09.07.2011 20:17 | c++/Linux poradit kniznice

ten riadok si nevsimaj

image=gtk_image_new_from_file("./Resources/red.png");

to som uz davno odkomentoval , teda hned ako mi zmrzol pc a restartoval som ho:), to s tou bitmapou je fajn napad. da sa to robit aj v Linuxe alebo je to len nieco specialne pre MFC ?


Offline

Skúsený užívateľ
Skúsený užívateľ
c++/Linux  poradit kniznice

Registrovaný: 11.01.09
Prihlásený: 26.01.18
Príspevky: 1290
Témy: 9 | 9
Bydlisko: HE
NapísalOffline : 09.07.2011 20:35 | c++/Linux poradit kniznice

Ak ti vyhovuje ten napad s bitmapou, tak to kludne sprav aj v GTK+. Neviem ci je tam taky ist mechanizmus, ako napr v QT, alebo v SDL vo windowse, ale dam ti aspon nejaky zakladny postup:

1.) vytvoris si kresliacu plochu - platno (canvas) - o pozadovanej velkosti. Nemusi to byt priamo bitmapa, to bol len priklad. Vravim, neviem presne, co vsetko ponuka GTK.
2.) budes osetrovat kliknutie na dany kresliaci objekt
3.) zistis X-ovu a Y-ovu suradnicu v dobe kliknutia na objekt
4.) do pola na danu suradnicu zapises cislo odlisne od toho, ktore tam je ( ak tam povedzme zapisujes iba 0 a 1, tak ich jednoducho znegujes kazdym pristupom)

Skusal som ti najst nejake example na vykreslenie, skus sa v tom trocha povrtat, ako vytvorit nejaku kresliacu plochu.
http://www.jroller.com/RickHigh/entry/gtk_drawing_example_done_in
http://www.gtk.org/tutorial1.2/gtk_tut-23.html


Offline

Užívateľ
Užívateľ
c++/Linux  poradit kniznice

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22 | 22
Bydlisko: Zilinska Un...
NapísalOffline : 10.07.2011 9:36 | c++/Linux poradit kniznice

Presne, ked si najdes dobry tutorial urcite to tam najdes. To su zaklady podobnych tutorialov: bottony,eventy,kreslenie ... . Ak by si to skusal v MFC, mozem ti poslat prednesku, kde sme sa tomu venovali, ale vidim, ze si linuxak, co je fajn. Ja by som si zvolil QT alebo mozes skusit aj Java, to by tiez nebola zla volba. Nech uz si vyberies hocico, v kazdom takomto vyspelom GUI systeme je moznost kreslenia do canvasu, len si to treba nastudovat. Pozor na alokacie, kde ich davas. Pamat alokujes raz v konstruktore a potom do nej vkladas nove a nove data v sluckach, zvycajne :).


_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5 | 5
Napísal autor témyOffline : 14.07.2011 20:18 | c++/Linux poradit kniznice

Vdaka za tipy, urcite si nieco z toho vyberiem :)


 [ Príspevkov: 9 ] 


c++/Linux poradit kniznice



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Pridanie neštandardnej knižnice visual c++ 2010 Express

v Assembler, C, C++, Pascal, Java

1

90

03.01.2013 13:40

BX

V tomto fóre nie sú ďalšie neprečítané témy.

Hladame 3x C/C++ Linux developer- projekt 11/2016-2/2017

v Ponuka práce

1

209

24.10.2016 15:28

michalesku

V tomto fóre nie sú ďalšie neprečítané témy.

C alebo C++ potrebujem poradiť :)

v Assembler, C, C++, Pascal, Java

6

1580

25.06.2011 23:56

street_punk

V tomto fóre nie sú ďalšie neprečítané témy.

C++/Linux/PHP

v Ponuka práce

0

231

09.08.2013 11:06

Vasinova

V tomto fóre nie sú ďalšie neprečítané témy.

Prekladac na C++ pre Linux

v Assembler, C, C++, Pascal, Java

5

492

10.06.2009 19:24

Flexor28

V tomto fóre nie sú ďalšie neprečítané témy.

Hladam C++ developera pre linux

v Ponuka práce

0

210

17.08.2015 21:07

flesik

V tomto fóre nie sú ďalšie neprečítané témy.

Potreboval by som poradit s premennymi v C++

v Assembler, C, C++, Pascal, Java

1

308

20.11.2008 15:57

neutronmind

V tomto fóre nie sú ďalšie neprečítané témy.

kniznice

v PHP, ASP

5

539

02.06.2007 10:51

zero0x

V tomto fóre nie sú ďalšie neprečítané témy.

Chyba knižnice

v Operačné systémy Microsoft

3

487

31.03.2009 7:15

Suzuki2003

V tomto fóre nie sú ďalšie neprečítané témy.

Externe kniznice

v Assembler, C, C++, Pascal, Java

5

165

31.03.2014 16:18

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

Windows 7 knižnice

v Operačné systémy Microsoft

2

187

03.01.2012 16:52

KeNNi

V tomto fóre nie sú ďalšie neprečítané témy.

Zend framework 1 kniznice

v PHP, ASP

0

111

07.02.2014 9:48

Merlin_sk

V tomto fóre nie sú ďalšie neprečítané témy.

Miniatury bez GD kniznice

v PHP, ASP

6

317

14.09.2007 11:06

Blackshadow

V tomto fóre nie sú ďalšie neprečítané témy.

Chyba-Nepovolene premiestnenie systemovej kniznice DLL

v Ostatné programy

0

353

31.03.2010 11:15

T0mashK0

V tomto fóre nie sú ďalšie neprečítané témy.

Mandriva Linux vs Suse Linux

v Operačné systémy Unix a Linux

1

547

04.09.2007 16:34

Intelman

V tomto fóre nie sú ďalšie neprečítané témy.

Mám sa učiť C ++/objective C/ C#?

v Assembler, C, C++, Pascal, Java

5

351

08.07.2014 20:40

XOLOO



© 2005 - 2018 PCforum, edited by JanoF