[ 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 ] @
[ 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)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.