Výsledky 1 až 8 z 8

Téma: [C#] mazanie nakresleneho objektu

  1. #1

    Standardní [C#] mazanie nakresleneho objektu

    mam jeden projekt na semestralnu pracu. je to nieco podobne ako Windowsacky Paint. Moj probelm spociva v tom, ze vzdy, ked nakreslim napr elypsu alebo iny graf. objekt, tak po minimalizovani okna, alebo prejdeni nejakou inou aplikaciu, nemam na ploche nic. vrajze sa to riesi priebeznym ukladanim do bitmapy. mohol by mi niekto napisat nejaku metodu ako na to?
    do zajtra by na www.worko.szm.sk/gGraphics.exe mal byt skompilovany projekt a ako "funguje"

    THANX
    PC: AMD Athlon 64 3000+ s754, MSI K8N Neo-FSR series, nForce3 250 chipset, 512DDR RAM Kingston 433MHz CL3, 512DDR RAM Corsair 433MHz CL2.5 , Western Digital 160GB Sata2, ASUS GeForce 7600FS 256DDR2, DVDRW LG, DVDROM Sony, 17\" LCD TFT Prestigio, WinVista Business 32bit

    Notebook: HP nx6325 , Sempron3500+ 1,8GHz, 1,5GB DDR2 667MHz RAM, ATI Xpress 1150 chipset/GPU, 60GB SATA HDD, DVD RW Pioneer,WinXP PRO SP2+, Ubuntu Gutsy Gibbon

  2. #2

    Standardní

    Nevim jak v C# ale treba Delphi maj komponentu TImage, zkus pouzit tu...
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

  3. #3
    Senior Member Avatar uživatele Anduril
    Založen
    12.10.2002
    Bydliště
    OVA, OL
    Věk
    42
    Příspěvky
    3 474
    Vliv
    322

    Standardní

    Já jsem to dělal tak, že jsem přímo na bitmapu (Bitmap) kreslil a v událost Paint jsem ji vykresloval na obrazovku.. Akorát tam byl menší problém s blikáním té bitmapy při překreslování..to jsem nevyřešil..

    Vytvoříš si někde bitmapu
    Kód:
    Bitmap bmp = new Bitmap(640, 480);
    Pro kreslení na bitmapu potřebuješ Graphics objekt, pokud nechceš kreslit pomocí SetPixel..
    Kód:
    Graphics g = Graphics.FromImage( bmp );
    Vykreslíš něco na bitmapu přes Graphics objekt a uvolníš ho..
    Kód:
    g.DrawLine(....);
    g.Dispose();
    Teď máš něco v bitmapě..po nakreslení potřebuješ bitmapu dostat na obraz..např. na nějaký Panel..
    Kód:
    MyPanel.Invalidate();
    MyPanel.Update();
    Událost Paint pro panel...
    Kód:
    void MyPanel_Paint(Object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        g.DrawImage( bmp, 0, 0 );
        g.Dispose();
    }
    Teď máš bitmapu vykreslenou na panelu...
    Jde optimalizovat volání Invalidate tak, že se bude nastavovat pro překreslení jen určitá oblast..ta, na které bylo kresleno...mrkni na metodu Invalidate a její parametry...

    Možná to jde udělat i jinak..nějak že by se na bitmapu ukládalo jen v případě nutnosti, ale to jsem nezkoumal..
    Pokud chceš, můžu ti poslat svoje malování (ale mám to trochu jiné..kreslím hlavně přes SetPixel pomocí algoritmů jako DDA, Scan line flood fill a tak).

    Btw kreslení perem se dělá tak, že nakreslíš bod a pak kreslíš od předchozí pozice čáru k další pozici..budeš tak mít spojitou čáru a ne jednotlivé body
    ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
    home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
    work: HP Docking Station | HP L2445W
    audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555

  4. #4

    Standardní

    Fuj, to je humus. V Delphi je to asi tak milionkrat jednoduchsie a bude to bezat asi tak 10-krat rychlejsie...
    1: Asus P2B 1.10 • Celeron 1100@1364/1.8V • 512MB SDRAM • Samsung SP1213N+WD AC28400 • Toshiba XM-6402B+SD-M1212 • PowerColor AR2L Radeon 9100 64MB • 3C900-Combo • Bt848A • ASB-3940UA • AWE-64 • DTK PTP-3007 • VisionMaster 405 • Umax UC630 • Star LC24-200 Colour 2: PCPartner TXB820DS • Cyrix MII PR300/1.8V • 256MB SDRAM • 2xSamsung HD400LD+IT8212F • Accesstek CW4001 • LS-120 • Mystique 4MB • Millennium II 4MB • 3C509 • CMI8329A+Dream MIDI • ADI ProVista E44 • SyncMaster 203B Notebook: DTK FortisPro TOP-5A • P166MMX/1.8V • 80MB EDO • Hitachi 5K80 40GB • 12,1" TFT Router: A-Trend ATC-1425B • i486DX 50@33/5V • 48MB FPM • WD AC14300 • UMC UM9003F • HP PC LAN 16/TP+ Car: Mazda 323P BA • Z5 1489ccm, 65kW@5500rpm, 134Nm@4000rpm

  5. #5
    Senior Member Avatar uživatele Anduril
    Založen
    12.10.2002
    Bydliště
    OVA, OL
    Věk
    42
    Příspěvky
    3 474
    Vliv
    322

    Standardní

    Citace Původně odeslal Rainbow
    Fuj, to je humus. V Delphi je to asi tak milionkrat jednoduchsie a bude to bezat asi tak 10-krat rychlejsie...
    No je to v Java stylu...ve starem VB6 to bylo mnohem jednodussi..
    Jinak ale rychlost me velmi prekvapila...delal jsem nejake graf. efekty pomocí Set/GetPixel a ve VB6 to samé běží mnohem mnohem pomaleji... .NET není vůbec pomalý..
    ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
    home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
    work: HP Docking Station | HP L2445W
    audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555

  6. #6

    Standardní

    Anduril, napisal ssom co si mi poradil a compiler vypisal:
    D:\_zadanieGrafika\gGraphics\Form1.cs(20): A field initializer cannot reference the nonstatic field, method, or property 'gGraphics.Form1.bmp'

    nepaci sa mu premenna bmp, teda neprelozi riadok
    Graphics g = Graphics FromImage(bmp);
    PC: AMD Athlon 64 3000+ s754, MSI K8N Neo-FSR series, nForce3 250 chipset, 512DDR RAM Kingston 433MHz CL3, 512DDR RAM Corsair 433MHz CL2.5 , Western Digital 160GB Sata2, ASUS GeForce 7600FS 256DDR2, DVDRW LG, DVDROM Sony, 17\" LCD TFT Prestigio, WinVista Business 32bit

    Notebook: HP nx6325 , Sempron3500+ 1,8GHz, 1,5GB DDR2 667MHz RAM, ATI Xpress 1150 chipset/GPU, 60GB SATA HDD, DVD RW Pioneer,WinXP PRO SP2+, Ubuntu Gutsy Gibbon

  7. #7
    Senior Member Avatar uživatele Anduril
    Založen
    12.10.2002
    Bydliště
    OVA, OL
    Věk
    42
    Příspěvky
    3 474
    Vliv
    322

    Standardní

    Doufám, že to voláš v nějaké metodě...
    Protože tahle chyba překladu (Compiler Error CS0236) nastane, když inicializuješ instanční proměnnou třídy jinou instancí mimo metodu..

    Prostě bych řekl, že jsi to zkopíroval někam, kam to nepatří
    ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
    home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
    work: HP Docking Station | HP L2445W
    audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555

  8. #8

    Standardní

    Cuj tu kolego .. uz som to vyriesil tak vymaz tuto spravicku

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •