Witam!
Tworzę na szybko prosty program do tworzenia prezentacji i mam problem z ustaleniem pola rysowania po panelu (panelSlide
). Potrzebuję obliczyć miejsce, po którym mogę rysować na tymże panelu w proporcjach 4:3 i marginesami 4) Po krótkim pomyśleniu wyczarowałem takie coś:
const int slideMargin = 4;
const double defaultFontSize = 3.5;
private void DrawSlide(Graphics graph)
{
double maxwidth = panelSlide.Size.Width;
double maxheight = panelSlide.Size.Height;
double height = 0.0;
double width = 0.0;
double top = 0.0;
double left = 0.0;
double bottom = 0.0;
double right = 0.0;
if (maxwidth / maxheight >= 4.0 / 3.0)
{
top = slideMargin;
bottom = slideMargin;
height = maxheight - (2 * slideMargin);
width = (4.0 / 3.0) * height;
left = (maxwidth / 2.0) - (width / 2.0);
right = left;
}
else
{
//Tu by była reszta kodu, gdyby ten powyżej działał
}
Rectangle rect = new Rectangle(Convert.ToInt32(top), Convert.ToInt32(left), Convert.ToInt32(width), Convert.ToInt32(height));
Brush background = new SolidBrush(Color.White);
graph.FillRectangle(background, rect);
}
Kod ten oczywiście działa źle. Nic mi nie przychodzi do głowy, a bardzo też nie ma czasu się nad tym zastanawiać (mam tylko kilka dni na napisanie tego).
A tak swoją drogą: czy wyświetlanie prezentacji (z materiałami wideo) przy użyciu XNA to rzeczywiście taki zły pomysł?