Click here to Skip to main content
15,891,863 members
Home / Discussions / Windows Forms
   

Windows Forms

 
AnswerRe: Automatically add a new row when the user presses "Tab" Pin
Som Shekhar16-Jun-10 2:05
Som Shekhar16-Jun-10 2:05 
QuestionUSB drive reader Pin
S.Aijaz14-Jun-10 3:45
S.Aijaz14-Jun-10 3:45 
Answercross-post Pin
Luc Pattyn14-Jun-10 3:55
sitebuilderLuc Pattyn14-Jun-10 3:55 
QuestionCustom controll flickers! Pin
venomation9-Jun-10 9:28
venomation9-Jun-10 9:28 
AnswerRe: Custom controll flickers! [modified] Pin
Luc Pattyn9-Jun-10 9:43
sitebuilderLuc Pattyn9-Jun-10 9:43 
GeneralRe: Custom controll flickers! Pin
venomation9-Jun-10 11:42
venomation9-Jun-10 11:42 
GeneralRe: Custom controll flickers! Pin
Luc Pattyn9-Jun-10 12:06
sitebuilderLuc Pattyn9-Jun-10 12:06 
GeneralRe: Custom controll flickers! Pin
venomation9-Jun-10 13:37
venomation9-Jun-10 13:37 
Thanks for that I think I have solved the looping (not looping through everything) but now a new problem arises, i have to refresh the control every time I scroll to see the updated grid !

using System.Drawing;
using System.Windows.Forms;

namespace TileMapper.Presentation.Controls
{
    public partial class MapRenderer : UserControl
    {
        private Point _tileBound;
        private Point _rowsColumns;
        private bool _initalized = false;
        Rectangle[,] _renderBounds;
        public MapRenderer()
        {
            InitializeComponent();
            this.DoubleBuffered = true;

            // Activates double buffering 
            this.SetStyle(ControlStyles.DoubleBuffer |
               ControlStyles.OptimizedDoubleBuffer |
               ControlStyles.UserPaint |
               ControlStyles.AllPaintingInWmPaint, true);
            this.UpdateStyles();


        }

        public void InitalizeGrid(int tileWidth, int tileHeight, int rows, int columns)
        {
            _tileBound = new Point(tileWidth, tileHeight);
            _rowsColumns = new Point(rows, columns);
            panel1.AutoScrollMinSize = new Size(_tileBound.X * _rowsColumns.X, _tileBound.Y * _rowsColumns.Y);
            _initalized = true;
            _pen = new Pen(Color.Black);
            _tile = new Rectangle(0, 0, _tileBound.X, _tileBound.Y);
            _im = Image.FromFile(@"D:/tile.png");

            _scrollValue = new Point(panel1.HorizontalScroll.Value, panel1.VerticalScroll.Value);

            _renderBounds = new Rectangle[_tileBound.X, _tileBound.Y];

            for (int x = 0; x < _tileBound.X; x++)
            {
                for (int y = 0; y < _tileBound.Y; y++)
                {
                    _renderBounds[x,y] = new Rectangle(x * _tileBound.X
                       , y * _tileBound.Y, _tileBound.X, _tileBound.Y);
                }
            }
        }

        private Point _scrollValue;

        Pen _pen;
        Rectangle _tile;
        private Image _im;
        void DrawGrid(Graphics e, Rectangle bound)
        {
            int start = bound.X / _tileBound.X;
            int end = bound.X/_tileBound.X + bound.Width/_tileBound.X;

            int startY = bound.Y / _tileBound.Y;
            int endY = bound.Y + bound.Height/_tileBound.Y;

            for (int x = start; x < end; x++)
            {
                for (int y = startY; y < endY; y++)
                {
                   e.DrawImage(_im, _renderBounds[x,y], _tile, GraphicsUnit.Pixel);
                }

            }

        }





        private void panel1_Paint_1(object sender, PaintEventArgs e)
        {
            if (_initalized)
            {
                Rectangle a = e.ClipRectangle;

                _scrollValue.X = panel1.HorizontalScroll.Value;
                _scrollValue.Y = panel1.VerticalScroll.Value;

                DrawGrid(e.Graphics, a);
            }
        }

        private void panel1_Scroll(object sender, ScrollEventArgs e)
        {
            panel1.Refresh();
        }

    }
}

GeneralRe: Custom controll flickers! Pin
Luc Pattyn9-Jun-10 13:44
sitebuilderLuc Pattyn9-Jun-10 13:44 
GeneralRe: Custom controll flickers! Pin
venomation9-Jun-10 14:05
venomation9-Jun-10 14:05 
GeneralRe: Custom controll flickers! Pin
Luc Pattyn9-Jun-10 14:40
sitebuilderLuc Pattyn9-Jun-10 14:40 
GeneralRe: Custom controll flickers! Pin
venomation10-Jun-10 4:11
venomation10-Jun-10 4:11 
GeneralRe: Custom controll flickers! Pin
Luc Pattyn10-Jun-10 4:21
sitebuilderLuc Pattyn10-Jun-10 4:21 
GeneralRe: Custom controll flickers! Pin
venomation10-Jun-10 4:56
venomation10-Jun-10 4:56 
GeneralRe: Custom controll flickers! Pin
Luc Pattyn10-Jun-10 5:16
sitebuilderLuc Pattyn10-Jun-10 5:16 
GeneralRe: Custom controll flickers! Pin
venomation10-Jun-10 5:27
venomation10-Jun-10 5:27 
GeneralRe: Custom controll flickers! Pin
Luc Pattyn10-Jun-10 5:41
sitebuilderLuc Pattyn10-Jun-10 5:41 
GeneralRe: Custom controll flickers! Pin
venomation11-Jun-10 1:44
venomation11-Jun-10 1:44 
GeneralRe: Custom controll flickers! Pin
Luc Pattyn11-Jun-10 1:55
sitebuilderLuc Pattyn11-Jun-10 1:55 
QuestionDynamically data binding in tree view control in windows forms Pin
ims.sanjay1-Jun-10 9:11
ims.sanjay1-Jun-10 9:11 
AnswerRe: Dynamically data binding in tree view control in windows forms Pin
Peace ON1-Jun-10 21:47
Peace ON1-Jun-10 21:47 
AnswerRe: Dynamically data binding in tree view control in windows forms Pin
Mycroft Holmes1-Jun-10 22:27
professionalMycroft Holmes1-Jun-10 22:27 
Questionpull method of crystal report..promptin for password. Pin
VB.Net Developer31-May-10 20:12
VB.Net Developer31-May-10 20:12 
AnswerRe: pull method of crystal report..promptin for password. Pin
Adam R Harris17-Jun-10 6:03
Adam R Harris17-Jun-10 6:03 
Questionhow set password in code Pin
Mohammad Barzanooni27-May-10 18:07
Mohammad Barzanooni27-May-10 18:07 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.