Archief - [PROG][c#.net] painten op form

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

schop aars

Legacy Member
hoe paint ik iets naar een form in c#.net?
ik wil een simpel spel maken dat images naar een form paint en kan zonder daarvoor direct3d enzo te gebruiken.

khad al gedacht aan het overriden van de onpaint() methode maar kan ik deze methode terug oproepen als er iets anders gepaint moet worden?
of gebruik ik beter een andere manier? (weet niet of het mogelijk is maar mss een picturebox even groot als mijn form en daar dan alles naar painten?)

Krueger

Legacy Member
Wat versta je onder "images op een form painten"?

Wil je zelfgemaakte bitmaps ofzo laten bewegen. Of wil je eerder zelf iets teken met DrawEllips, DrawLine, ...

De onpaint methode terug oproepen kan eenvoudig door de form eens te Refreshen. Refresh roept immers automatisch de onpaint op.

Warbringer

Legacy Member
Ik ben eigelijk met iets bijna identieks bezig
Ik heb gewoon een picturebox op mijn form gezet en in dat paint event beginnen knoeien. Hier is de code, ik hoop dat ge er iets mee zijt :D basically hebt ge enkel die g.drawimage(...) nodig. En de locatie verandert ge dan door die positievariabelen te veranderen (duh :p) zo kunt ge ze laten bewegen enzo


Code:
private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            if (GlobalVars.backGround != null)
            {
                // Dit zorgt dat een grotere achtergrond 'scrollbaar' is 
                g.DrawImageUnscaled(GlobalVars.backGround, GlobalVars.xPos, GlobalVars.yPos,GlobalVars.backGround.Width,GlobalVars.backGround.Height);


                //Dit gaat alle units af en tekent dan hun Image 
                for (int teller = 0; teller < GlobalVars.player1Units.Count; teller++)  
                {
                    Unit thisUnit = (Unit)(GlobalVars.player1Units[teller]);

                    //Deze g.drawimage tekent een nieuwe .jpg op de picturebox
                    //Bij degene die er al opstaan
                    g.DrawImage(thisUnit.GetUnitImage(), thisUnit.GetPositionX(), thisUnit.GetPositionY(),thisUnit.GetUnitSizeX(), thisUnit.GetUnitSizeY());
                }

                for (int teller = 0; teller < GlobalVars.player1Buildings.Count; teller++)  
                {
                    Building thisBuilding = (Building)GlobalVars.player1Buildings[teller];
                    g.DrawImage(thisBuilding.GetBuildingImage(), thisBuilding.GetPosX(), thisBuilding.GetPosY(), thisBuilding.GetBuildingSizeX(), thisBuilding.GetBuildingSizeY());
                    
                }

                for (int teller = 0; teller < GlobalVars.resources.Count; teller++) 
                {
                    Resource thisResource = (Resource)GlobalVars.resources[teller];
                    g.DrawImage(thisResource.resourceImage, thisResource.positionX, thisResource.positionY, thisResource.sizeX, thisResource.sizeY);
                }
            }


        }

CyBeRRaT

Legacy Member
en als ge uw OnPaint() methode wil oproepen, doet ge form.Refresh() of form.Invalidate(). als je dat doet, roept hij zoiezo OnPaint op. hou er wel rekening mee dat dit niet de enige keer is. uw form minimalisen en dan terug maximalisen roept bv ook een OnPaint() op
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan