Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

GDI+ jednostavno pitanje

[es] :: .NET :: GDI+ jednostavno pitanje

[ Pregleda: 2354 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.smin.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon GDI+ jednostavno pitanje28.01.2007. u 17:11 - pre 209 meseci
[code]
#include "stdafx.h"
#include <tchar.h>
#using <mscorlib.dll>
#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Windows::Forms;
using namespace System::Drawing;



__gc public class Grafika : public Form
{
public:
Grafika(void)
{
//form back color
this->BackColor = Color::Black;
this->WindowState = FormWindowState::Maximized;

//podesi cetkice
br1 = new SolidBrush(Color::White);

//podesi Point
p1.X = 10; p1.Y = 10;

//timer...
tmVreme = new Timer(); tmVreme->Interval = 10;
tmVreme->Tick += new EventHandler( this, Crtaj);
tmVreme->Start();

}
private:
Timer *tmVreme;
SolidBrush *br1;

//pozicija pravougaonika
Point p1;

void Crtaj(Object *ps, EventArgs *pe)
{
Graphics *gc = this->CreateGraphics();
gc->Clear(Color::Black);
gc->FillEllipse(br1, p1.X, p1.Y, 120, 120);
p1.X += 1; p1.Y += 1;
}
};

int _stdcall WinMain(void)
{
Application::Run( new Grafika());
return 0;
}
[code]

Kod se prevede i radi sve ok ali...
Krug koji se kreće po ekranu "trepuće" i ja ne znam kako da izvedem da se to ne događa, i da li je uopšte moguće to izvesti preko GDI+?

 
Odgovor na temu

radoica

Član broj: 12972
Poruke: 158
212.200.176.*



+3 Profil

icon Re: GDI+ jednostavno pitanje28.01.2007. u 22:42 - pre 209 meseci
Postavi DoubleBuffer na true, koristi metod SetStyle i UpdateStyles (vidi na MSDN kako se koriste).
Crtanje moras da uradis u OnPaint metodu sa Graphics-om kojeg dobijas u tom metodu,
a ne sa metodom CreateGraphics, inace ti nece raditi DoubleBuffer.
Najbolje bi bilo da napises metod koji prima Graphics objekat i taj metod pozivas u OnPaint.
Graphics objekat kojeg dobijas u OnPaint metodu i sa metodom CreateGraphics nisu u potpunosti isti,
onaj u OnPaint-u ne smes unistiti inace ce ti puci aplikacija.
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.smin.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: GDI+ jednostavno pitanje29.01.2007. u 19:58 - pre 209 meseci
@radoica
Covek, hvala puno!
Ali sad moram opet da smaram....
Naime, pokušavam da učim ovaj GDI+ i sad imam još jedan problem...

Kako da promenim rezoluciju ekrana ? Da bude na primer 800x600?
Takođe bih hteo da znam kako da proverim koja je trenutna rezolucija, da bih po završetku programa mogao da je vratim.
 
Odgovor na temu

radoica

Član broj: 12972
Poruke: 158
212.200.177.*



+3 Profil

icon Re: GDI+ jednostavno pitanje29.01.2007. u 22:02 - pre 209 meseci
Procitaj ovo: http://www.codeproject.com/csharp/CSDynamicScrRes.asp
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.smin.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: GDI+ jednostavno pitanje30.01.2007. u 19:59 - pre 209 meseci
Pročitao jesam al' nisam shvatio kako da promenim rezoluciju( jesam kako da vidim koja je trenutna). Valjda zato što je kod pisan za C#...
Ajd ako te ne mrzi da mi napišeš funkciju koja menja rezoluciju( u MC++u ), stvarno mi je frka...
 
Odgovor na temu

radoica

Član broj: 12972
Poruke: 158
*.yubc.net.



+3 Profil

icon Re: GDI+ jednostavno pitanje30.01.2007. u 22:29 - pre 209 meseci
Sve ti pise u ovom linku gore. Posto ne moze iz .NET-a da se ovo postigne, covek je dao dve win32 funkcije sa kojima ovo moze da se uradi (EnumDisplaySettings, ChangeDisplaySettings, pogledaj u dokumentaciji kako se koriste). Ti samo treba da ih upotrebis preko PInvoke-a (http://www.pinvoke.net)
 
Odgovor na temu

[es] :: .NET :: GDI+ jednostavno pitanje

[ Pregleda: 2354 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.