NIMA_1981
شنبه 07 خرداد 1390, 23:47 عصر
سلام دوستان من با استفاده از کد زیر یک شکل بیضی رو رسم میکنم
void
drawRotateEllipse(int centerx, int centery, int width, int height, double angle, int clr) {
const double PI = 3.14159265358979323846;
int steps = 172;
double beta = -angle * (PI / 180);
double sinbeta = Math.Sin(beta);
double cosbeta = Math.Cos(beta);
for (int i = 0; i < 360; i += 360 / steps)
{
double alpha = i * (PI / 180);
double sinalpha = Math.Sin(alpha);
double cosalpha = Math.Cos(alpha);
double X = centerx + (width * cosalpha * cosbeta - height * sinalpha * sinbeta);
double Y = centery + (width * cosalpha * sinbeta + height * sinalpha * cosbeta);
m.SetPixel((
int)X,(int)Y,Color.Red);
} }
}
http://up.iran-ps.com/images/875biz.jpg
کد بالا با قرار دادن یک سری نقطه کنار هم شکل بیضی رو میکشه حالا من می خوام این بیضی رو تو پر بکشم یعنی fill بشه مثل این شکل میشه یک راه پیشنهاد کنید که باید چطوری الگوریتم را بنویسم
http://www.c-sharpcorner.com/UploadFile/mahesh/gdi_plus12092005070041AM/Images/GDITut4BegMCBImg7.gif
با تشکر
void
drawRotateEllipse(int centerx, int centery, int width, int height, double angle, int clr) {
const double PI = 3.14159265358979323846;
int steps = 172;
double beta = -angle * (PI / 180);
double sinbeta = Math.Sin(beta);
double cosbeta = Math.Cos(beta);
for (int i = 0; i < 360; i += 360 / steps)
{
double alpha = i * (PI / 180);
double sinalpha = Math.Sin(alpha);
double cosalpha = Math.Cos(alpha);
double X = centerx + (width * cosalpha * cosbeta - height * sinalpha * sinbeta);
double Y = centery + (width * cosalpha * sinbeta + height * sinalpha * cosbeta);
m.SetPixel((
int)X,(int)Y,Color.Red);
} }
}
http://up.iran-ps.com/images/875biz.jpg
کد بالا با قرار دادن یک سری نقطه کنار هم شکل بیضی رو میکشه حالا من می خوام این بیضی رو تو پر بکشم یعنی fill بشه مثل این شکل میشه یک راه پیشنهاد کنید که باید چطوری الگوریتم را بنویسم
http://www.c-sharpcorner.com/UploadFile/mahesh/gdi_plus12092005070041AM/Images/GDITut4BegMCBImg7.gif
با تشکر