Writing custom Markdig extensions
Markdig, according to its description, "is a fast, powerful, CommonMark compliant, extensible Markdown processor for .NET". While most of our older projects use MarkdownDeep (including an increasingly...
View ArticleCapturing screenshots using C# and p/invoke
I was recently updating some documentation and wanted to programmatically capture some screenshots of the application in different states. This article describes how you can easily capture screenshots...
View ArticleGetting a window rectangle without the drop shadow
In my last article, I describe how to use the Win32 API to capture screenshots of the desktop. There was one frustrating problem with this however - when capturing an image based on the value of the...
View ArticleBook Review: The C# Helper Top 100
Almost 20 years ago after finishing a training scheme I was hired for my first permanent role. After getting paid for the first time I immediately rushed off to the bookshop to buy myself a programming...
View ArticlePainting animated images using C#
While reviewing The C# Top 100 it occurred to me that in my own code base I have many bits of code which may make useful blog posts, and that shouldn't take as long to write as the ones I usually...
View ArticleArranging items radially around a central point using C#
Recently I was looking for a way of display hierarchical information in a more compact form than the previous horizontal/vertical trees I was using. One of the concepts I looked into during this was...
View ArticleUpload data to blob storage with Azure Functions
Some time ago I used a third party product which accepted data from client applications via a HTTP WCF service and saved this data as files on the local disk. A Windows service would then periodically...
View ArticleInstalling the URL Rewrite module into Internet Information Services
For quite some time now Internet Information Services (IIS) has had an URL Rewriter component that you can optionally install. As one of my upcoming shorter posts mentions the use of it, I thought I'd...
View ArticleRedirecting to HTTPS when using IIS behind a load balancer
Cyotek has a number of different websites powering various bits of our software and services. Some are Windows based using IIS, and some are Linux based using Apache. Internal servers are are directly...
View ArticleReading and writing 18-bit RGB VGA Palette (pal) files with C#
18-bit RGB palettes are an old format used by VGA displays of yesteryear (although interestingly Wikipedia states they are still used by many LCD monitors). These palettes use 6-bits for each of the...
View ArticleTools we use - 2017 edition
Happy New Year! Once again it's that time for the list of software products I used throughout the past year. Although there's a fair few new entries, overall there's not a huge amount of change given...
View ArticleUpdating AssemblyInfo.cs version information via batch file
Over a year ago I wrote how to build and publish NuGet packages via Jenkins in which I stated I would follow up with another article on modifying AssemblyInfo.cs via a batch file. Of course, I forgot...
View ArticleUsing the MantisBT REST API when hosted on IIS
I'm currently in the process of moving our hosting services from one provider to another; although some parts of cyotek.com infrastructure runs on Microsoft Azure, a fair chunk uses more traditional...
View ArticleDisplaying text in an empty ListBox
While looking at ways of improving the UI of a dialog in an application, I wanted to display some status text in a ListBox control that was empty. The default Windows Forms ListBox (which uses the...
View ArticleConverting colours between RGB and CMYK in C#
In my previous articles on reading and writing colours from various palette/swatch formats, I left CMYK conversion as an exercise for the reader and only demonstrated RGB aspects. This article...
View ArticleReading CorelDRAW Palettes Part 1, .pal files
I recently picked up a copy of CorelDRAW! 3.0 from eBay which came on two CD's with a different version on each. That gave me two different surprises, the first in that 3.0A wasn't an improved version...
View ArticleWorking with CorelDRAW Palettes part 2, writing .pal files
In my previous article, I described how to read an archaic CorelDRAW! 3.0 palette file. This continuation covers how to write files in this format.Writing the paletteJust like reading the file, writing...
View ArticleUpgrading a SVN repository using VisualSVN Server
Although I use Git for anything open source we produce, all other code is still in a SVN repository. I use VisualSVN Server for the server side things. When upgrading it last week to the latest...
View ArticleChecking if your Windows Forms applications are ready for .NET Core 3.0
Since the recent announcement that .NE Core 3.0 would support Windows Forms, I've been cautiously optimistic. Over the last week or so I've finally started experimenting with ASP.NET Core 2.1 and...
View ArticleTools we use - 2018 edition
Happy New Year! While once again it's that time for the list of software products and services I personally used throughout the previous year, it's also a birthday of sorts - this year will be the 10th...
View Article