Wednesday, July 5, 2017

Load Images in a Windows Form Custom Control

Good day!
Often times when developing custom controls you will add images or icons to enhance the UI through the Bitmap class. But when getting the image from file using Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + @"\calendar.png") you may encounter issues such as "path is null" since the path pointed by the BaseDirectory isn't the executable path. A simple workaround is to set the path of the image using hardcoded like Image.FromFile(@"C:\Images\ProjectX\calendar.png"). While this is acceptable, it is ugly to look at and may cause potential issues once the image has been transferred to another location. An accepted solution is to add the image as a project resource then reference it in the custom control code. To accomplish that, here are the steps.
* Right Click on the Project -> Properties
* In Resources, select Add Resource Dropdown -> Add Existing File
- Choose the image or icon to be used as resource. Once done, it will resemble as the photo below.
* In your custom control code, you can access the resource using Properties.Resources.Resource_Name
protected override void OnPaint(PaintEventArgs e)
 Image img = Properties.Resources.calendar_picker;
 bmp = new Bitmap(img, new Size(img.Width, img.Height));

Done! :-)


Post a Comment