Zdravím, dělám si takovou ulitku co mi klikáním do bitmapy vytváří nějakou mapu.
Hlavní problem je v tom, že když tam mám už xx textur přidaných, tak se mi to začíná pomalinku zlehounka zpomalovat a čím víc textur tím pomalejší. Nevím jak to vyřešit. Pozice odkud mě to bere texturu (tileset) a rozkouskovává si zapisuju do Listu a pak přes funkci nechávám vykreslovat.
kod zde
private void GenerateNewTerain()
{
Bitmap bitmap = new Bitmap(SharedEngine.MapField + 1, SharedEngine.MapField + 1);
Graphics _grap = Graphics.FromImage(bitmap);
int Size = SharedEngine.MapField / SharedEngine.CutTextureSize;
int _x = 0;
int _y = 0;
for (int x = 0; x < Size; x++)
{
for (int y = 0; y < Size; y++)
{
_grap.DrawRectangle(Pens.Black, _x, _y, SharedEngine.CutTextureSize, SharedEngine.CutTextureSize);
_y += SharedEngine.CutTextureSize;
foreach (PositionTexture pt in SharedEngine.newTexture)
if (pt.MapPositionX == x && pt.MapPositionY == y)
{
string Path = SharedEngine.Tileset_Path;
int MapPosX = pt.MapPositionX * SharedEngine.CutTextureSize;
int MapPosY = pt.MapPositionY * SharedEngine.CutTextureSize;
int CutSize = SharedEngine.CutTextureSize;
_grap.DrawImage(SharedEngine.ImageCut.Cut(Path, CutSize, CutSize, pt.TexturePositionX, pt.TexturePositionY), MapPosX, MapPosY, CutSize, CutSize);
}
}
_y = 0;
_x += SharedEngine.CutTextureSize;
}
PictureBox_Map.Image = bitmap;
}
Kdyžtak ta funkce co mi najde texturu a rozkouskuje je zde
public Image Cut(string Img, int Width, int Height, int x, int y)
{
Image Obr = Image.FromFile(Img);
Bitmap bmp = new Bitmap(Width, Height, PixelFormat.Format24bppRgb);
bmp.SetResolution(Width, Height);
Graphics gfx = Graphics.FromImage(bmp);
gfx.SmoothingMode = SmoothingMode.AntiAlias;
gfx.InterpolationMode = InterpolationMode.HighQualityBicubic;
gfx.PixelOffsetMode = PixelOffsetMode.HighQuality;
gfx.DrawImage(Obr, new Rectangle(0, 0, Width, Height), x, y, Width, Height, GraphicsUnit.Pixel);
Obr.Dispose();
//bmp.Dispose();
gfx.Dispose();
bmp.MakeTransparent(Color.FromArgb(84, 138, 150));
return bmp;
}
Díky za pomoc.