Tablica nowych obiektów




Pryzmat23.05.2006 23:55:59
#
Dołączył: 31.03.2006

chcial bym sobie dynamicznie stworzyc kilkadziesiat /kilkaset obiektow probuje w ten sposob [cs] Panel[,] p =new Panel[10,10]; //deklaracja tablicy 2-wymiarowej typu Panel for ( int x = 1 ; x==10 ; x++) { for ( int y = 1; y == 10 ;y++ ) { p[x,y] = new Panel(); p[x,y].BackColor = Color.Black; // p[x, y].ClientSize = new Size(10,10); p[x, y].SetBounds((this.Location.X + 14 + x * 10), (this.Location.Y + 64 + y * 10), 10, 10); p[x, y].Show(); p[x, y].Visible = true; } } [/cs] ale cos moje 100 paneli sie nie pokazuje :/

Nieznany24.05.2006 12:46:02
#

A gdzie: [cs] Controls.Add(p[x,y]); [/cs] wykonane dla każdego panelu?? Musisz dodać coś takiego w pętli.

Pryzmat24.05.2006 13:05:24
#
Dołączył: 31.03.2006

POMOGLO Dzieki

Pryzmat25.05.2006 00:46:35
#
Dołączył: 31.03.2006

[cs]void panele() { Panel pp = new Panel(); Controls.Add(pp); pp.SetBounds(160, 115, px10, py10); progressBar1.Maximum = px;

for (int x = 0; x < px; x++) {
    progressBar1.Value = x;
    for (int y = 0; y < py; y++) {                     
        p[x, y] = new Panel();
        Controls.Add(p[x, y]);                      
        p[x, y].BackColor = Color.Gainsboro;
        p[x, y].SetBounds((160 + x * 9 + x), 
                   (115 + y * 9 + y), 8, 8);
        //p[x, y].BorderStyle = BorderStyle.FixedSingle;
        // p[x, y].Show();
        //  p[x, y].Visible = true;
        // p[x, y].Enabled = true;
        Application.DoEvents();
    }
}
Controls.Remove(pp);
progressBar1.Value = 0;

}[/cs] puszczenie tego kodu na mocnym komputerku dla wartosci px=128 py=64 trwa kilka minut czy da sie to jakos przyspieszyc ewentualnie zrobic to na innych obiektach byle by byly male i mozna byloby zmienic ich kolor

Nieznany25.05.2006 07:18:34
#

Każesz mu wszystkie Eventy przetworzyć (wywołująć DoEvents) w każdym obrocie pętli, to trochę trwa. Poza tym kontrolki odswieżają się co jakiś czas, zobacz jak to robi Designer (poogladaj jak wyglada kod InitiaizeComponents po wrzuceniu z Designera kilku kontrolek). On sobie używa metody, która mówi kontrolce aby się nie odswieżała dopóki nie skończy. Leciała ona chyba jakoś SuspendLayout (a potem ResumeLayout ofc), ale głowy sobie nie dam uciąc. Zerknij do tej metody...poza tym nie liczłbym że to będzie działać szybko..w końcu chcesz mieć 8192 panele i osobiście nie czaje dlaczego chcesz tak....

Pryzmat25.05.2006 10:09:17
#
Dołączył: 31.03.2006

ma to sterowac wyswietlaczem led ale wielkosc wyswietlacza moze byc dowolna tzn 8x, 8y musze miec tablice jakis elementow ktore potrafia zmienic kolor(ma to sie jeszcze delikatnie animowac np. przeplywajace litery) z tej tablicy bede zczytywal sobie maciez binarna. i to chyba wszystko a doevents wstawilem tylko poto zeby potczas czekania na wyrysowanie wszystkich elementow ktos nie pomyslal ze to zawiecha

Nieznany25.05.2006 11:11:46
#

Ja bym napisał własną kontrolkę dziedziczącą po Panelu(albo nawet po Control) i odpowiednio rysującą to co by robiły te poszczególne panele. Jeden obiekt to lepiej niż tyle ile chcesz...

Pryzmat25.05.2006 11:13:15
#
Dołączył: 31.03.2006

a mozesz dac jakis sampel

Nieznany25.05.2006 11:16:19
#

Postaram się coś napisać, ale dopiero wieczorem albo nawet jutro. Nie mam teraz dostępu aby to zrobić...

Pryzmat25.05.2006 20:07:50
#
Dołączył: 31.03.2006

rozbroilem resource hackerem progrmik zblizony do tego co chce zrobic kontrolka zastepujaca wyswietlacz opisana jest tak CONTROL "Custom1", 1013, "MFCLedDisplayCtrl", 0x50010000, 6, 6, 450, 60 i zlozona zmalutkich bitmapek czarnych i szarych

Pryzmat26.05.2006 00:50:18
#
Dołączył: 31.03.2006

co do tworzenia wlasnyvh kontrolek znalazlem to aha ten soft ktory wybebeszalem uzywa GDI+ chyba wlasnie do tej kontrolki Ale nie wiem bo nigdy nie uzywalem GDI (przynajmniej swiadomie :]) A tak poza tym znalazlem komponent ktory moze mi pomoze (rymowanie tez niezamiezone) PanelArray albo PictureBoxArray

Nieznany26.05.2006 08:47:41
#

No właśnie coś takiego miałem stworzyć...jeden panel, który w metodzie OnPaint malowałby tablicę małych bitmapek...można to porównać do tego PicturBoxArray, albo PanelArray.

Pryzmat26.05.2006 10:05:18
#
Dołączył: 31.03.2006
pawlos napisa≥:
No właśnie coś takiego miałem stworzyć...jeden panel, który w metodzie OnPaint malowałby tablicę małych bitmapek...można to porównać do tego PicturBoxArray, albo PanelArray.

Probowalem cos z tym zrobic no ale niestety nie udalo mi sie nic nie wiem jak za pomoca tego zadeklarowac tablice

Nieznany26.05.2006 11:42:08
#

Daj namiary na te kontrolki to zobacze może coś z nimi wymyślę.

Pryzmat26.05.2006 11:51:14
#
Dołączył: 31.03.2006

menu->tools->choose toolbox items->.NET framework components->panelarray i pozostale

Pryzmat26.05.2006 12:44:39
#
Dołączył: 31.03.2006

wymyslilem cos wystarczajaco szybkiego tylko nie wiem czy sie sprawdzi [c] System.Drawing.Graphics formGraphics = panel1.CreateGraphics(); System.Drawing.Pen myPen; myPen = new System.Drawing.Pen(System.Drawing.Color.Black); for (int x = 0; x < panel1.Width/32; x++) for (int y = 0; y<panel1.Height/32 ; y++) // formGraphics.DrawRectangle(myPen, (x * 5), (y * 5), 5, 5); formGraphics.DrawIcon(Icon, (x * 32), (y * 32)); myPen.Dispose(); formGraphics.Dispose();[/c]

Nieznany26.05.2006 13:21:27
#

No własnie mniej więcej o coś takiego chodziło, tyle że ładniej by było jakby to była kontrolka. Ale jeżeli wystarcza to co jest...no to nie ma problemu...

Pryzmat26.05.2006 17:54:27
#
Dołączył: 31.03.2006

czy wystarczy to w wolnej chwili sprawie bo musi byc jeszcze indeksowanie

Pryzmat28.05.2006 19:10:47
#
Dołączył: 31.03.2006

No juz prawie wszystko dziala pozostal mi tylko jeden problem kwadraciki rysowane w ten sposob na panelu [c] formGraphics.DrawImage(sz, x * 6, y * 6, 4, 4);[/c] znikaja po spuszczeniu okienka w pasek albo zasłonięciu go czymkolwiek innym. Jest na to jakis sposob ???

adi9028.05.2006 19:59:35
#
Dołączył: 25.01.2006

Zapętlić?

Pryzmat28.05.2006 20:14:35
#
Dołączył: 31.03.2006

niemoge bo na bierzaco na niech rysuje

Pryzmat29.05.2006 08:50:09
#
Dołączył: 31.03.2006

http://msdn2.microsoft.com/en-us/library/system.windows.forms.painteventargs(d=ide).aspx chyba taki redraw musze zrobic

lub inna podkladke bo rysunek na panelu sie nie odswieza onevent Tylko nie wiem jaka bo picturebox na ktory liczylem tez sie nie odswieza

Pryzmat29.05.2006 12:11:10
#
Dołączył: 31.03.2006

mam tymczasowe roawiazanie rysuje wszystko odnowa w zdarzeniu Paint




Kontakt

Jeśli chcesz się z nami skontaktować napisz na adres: info(at)binboy.org lub odwiedź nasz profil na Facebooku!

O Nas

Serwis binboy.org to kopalnia wiedzy dla wszystkich z branży IT, w szczególności dla programistów i webmasterów. To duży zbiór kursów programowania, tutoriali, darmowych ebooków, setki kodów źródłowych itp.

Bądź w kontakcie

Panel użytkownika

Zaloguj się do panelu użytkownika.
Nie masz konta? Zarejestruj się!
Zapomniałeś hasła?