[ toxi_programer @ 28.01.2007. 17:11 ] @
[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+?
[ radoica @ 28.01.2007. 22:42 ] @
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.
[ toxi_programer @ 29.01.2007. 19:58 ] @
@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.
[ radoica @ 29.01.2007. 22:02 ] @
Procitaj ovo: http://www.codeproject.com/csharp/CSDynamicScrRes.asp
[ toxi_programer @ 30.01.2007. 19:59 ] @
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...
[ radoica @ 30.01.2007. 22:29 ] @
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)