How can I make a control occupy all the client area of a form

private void Form1_Load(object sender, System.EventArgs e) { Bitmap newBmp = new Bitmap(100, 100); Graphics g = Graphics.FromImage(newBmp); g.FillRectangle(new SolidBrush(Color.Red), 0, 0, 33, 100); g.FillRectangle(new SolidBrush(Color.White), 34, 0, 33, 100); g.FillRectangle(new SolidBrush(Color.Blue), 68, 0, 33, 100); pictureBox1.Image = newBmp; //pictureBox1 was dropped on the form }

How do I implement an owner drawn combobox

You can subclass ComboBox. In your derived class, make sure you set this.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; this.DropDownStyle = ComboBoxStyle.DropDownList; You also need to handle the DrawItem event to actually implement the drawing. Check out the details in the OwnerDrawnComboBox sample.

I need to save a color as a string and be able to retrieve it. How can I do this

Here are a couple of routines that might do what you want. ColorToString takes a color and represents it as a string that then can be passed into its companion StringToColor routine that will take the string back into a color. I think it works with all types of colors. You can download a test project. public string ColorToString(Color c) { string s = c.ToString(); s = s.Split(new char[]{’[’,’]’})[1]; string[] strings = s.Split(new char[]{’=’,’,’}); if(strings.GetLength(0) > 7) { s = strings[1] + ”,” + strings[3] + ”,” + strings[5] + ”,” + strings[7]; } return s; } public Color StringToColor(string s) { return (Color)TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString(s); }

Are AutoScrolling bounds setup in World or Device coordinates

AutoScrollingMinSize is setup in device coordinates. If you are using a world coordinate system other than pixels this means that you have to translate between world and device coordinates before you set these value. You can use the Graphics.TransformPoints API to do this as shown below. g.TransformPoints(CoordinateSpace.Device, CoordinateSpace.World, ptScrollSize); All this does is go from the GraphicsUnit that you are using to pixels. For example if your GraphicsUnit is Inch, then with a Graphics object that represents a monitor screen you will have translated values that come to about 100 pixels for every logical inch. Using this API ensures that you are insulated from the underlying device. The values will be much higher for printers. Another important point to remember is that your Transform in the painting code (please refer earlier FAQ in this section on AutoScrolling implementation) will have to be in logical coordinates and will hence have to translate between logical and device coordinates. protected void OnHandlePaint(object sender, PaintEventArgs args) { Graphics g = args.Graphics; g.PageUnit = GraphicsUnit.Inch; // this will always be in pixels Point[] ptAutoScrollPos = new Point[]{this.AutoScrollPosition}; // We have to convert the pixel value (device) to inches (logical..world) g.TransformPoints(CoordinateSpace.World, CoordinateSpace.Device, ptAutoScrollPos); // set up a simple translation so that we draw with respect to the doc bounds // and not the physical bounds g.TranslateTransform(ptAutoScrollPos[0].X, ptAutoScrollPos[0].Y); g.DrawEllipse(_pen, _rectEllipse); } Play around with the sample and all should be clear. When you run the sample nothing will be seen on the screen. Scroll around. Remember the logical units are in inches. You will be looking at a huge ellipse! Source: Syncfusion Staff