Your book stands out from other C# books by emphasizing real-world applications. The example code is excellent and allows me to learn far more about C# graphics programming than most of other C# books that only provide tutorial materials.
- J. Cohn

Search books or products from Amazon:

Introduction

    Overview

    What this Book Includes

    Is this Book for You

    What Do You Need to Use this Book

    What this Book Is Organized

    What is left out

    Conventions

    Using Code Examples

    Customer Support


Overview

Welcome to Practical C# Charts and Graphics. This book is intended for C# .NET developers who want to add professional graphics and charts to their applications. My hope is to write the ultimate C# chart and graphics programming guide that would be useful to C# application programmers of all skill levels.

We’ve all heard the saying “a picture’s worth a thousand words”. Creating charts and graphics plays a very important role in every Windows application. Charts and graphics can make data easier to understand, can make a report more interesting to read, and can have wide applications in our daily life. For instance, in the scientific, engineering, and mathematics community, there is always a need for presenting data and results graphically. Microsoft’s visual C# programming language is one of the few and best development tools available for providing both the computational capabilities of generating data as a simulation engine and displaying it in a variety of graphical representations based on its Graphical Device Interface (GDI+).

The power of the C# programming language, combined with the simplicity of implementing Windows Form applications in Visual Studio .NET, makes real-world Windows program development faster and easier than ever before. Visual C# is a versatile and flexible tool which allows users with even the most elementary programming abilities to produce sophisticated charts, graphics, and graphical user interfaces (GUIs). The level of complexity and sophistication of the graphics and charting applications is limited only by your needs, curiosity, and imagination.

As you may have already noticed, most bookstores offer hundreds of C# programming books. The vast majority of these books are general-purpose user guides and tutorials that explain the basics of the C# tool and how to use it to implement simple C# applications. Some of these books contain a chapter or two that cover graphics and charts. None, however, provide the level of detail that you will find in this book.

This book is written with the intent of providing you with a complete and comprehensive explanation about the C# graphics and chart capability, and pays special attention on how to create various charts that can be directly used in your real world C# Applications. Much of this book contains original work based on my own programming experience while developing commercial Computer Aided Design (CAD) packages. Without C# and .NET framework, development of advanced graphics and charts is a difficult and time-consuming task. To add even simple charts or graphs to your applications, you have to waste effort creating a chart program, or buy commercial graphics and chart add-on packages.

Using third-party graphics and chart add-on products in your applications has several drawbacks, however:

Visual C# and its powerful GDI+ class make it possible to easily implement your own professional graphics and chart package entirely using managed C# codes. However, Visual C# provides no tools for creating three-dimensional (3D) graphics objects. Even a 3D point, the simplest 3D graphics object, must be defined first in a suitable 3D coordinate system before it can be used as a 3D graphics object.

Practical C# Charts and Graphics provides everything you need to create advanced charts and graphics in your .NET applications. In this book I will show you how to create a variety of graphics and charts that range from simple two-dimensional (2D) X-Y plots to complicated three-dimensional (3D) surface graphs using managed C# code. I try my best to introduce readers to the C# graphics program in a simple way – simple enough to be easily followed by C# beginners who have never had experience in developing C# graphics and chart applications. You can learn from this book how to create a full range of color graphics applications and how to use C# controls to create impressive graphic and chart effects without having to buy expensive third-party add-on products.

Practical C# Charts and Graphics is not just a book, but a powerful 2D and 3D chart and graphics package. You may find that some of the examples in this book can be immediately used in your real-world problems, and that some may give you inspiration to add advanced graphical and sophisticated chart capabilities to your applications.

What this Book Includes

This book and its sample code listings, which are available for download from my website at www.authors.unicadpublish.com/jack_xu/, provide you with:

Is This Book for You

You don’t have to be an experienced C# developer or expert to use this book. I designed this book to be useful to people of all levels of C# programming experience. In fact, I believe if you have some experience with programming languages other than C#, you will be able to sit down in front of your computer, start up Microsoft Visual Studio .NET and C#, follow the examples that are provided with this book, and quickly become familiar with C# graphics programming. For those of you who are already experienced C# developers, I believe this book has a lot to offer you as well. There is much information in this book about graphics and chart programming that is not available in any other C# tutorial and reference book. In addition, most of the example programs provided with this book can be directly used in your real-world application development. This book will provide you with a level of detail, explanation, instruction, and sample program code that will enable you to do just about anything that is graphics and charts related using visual C#.

Perhaps you are a scientist, engineer, mathematician, student, or teacher instead of a professional programmer, this book is still a good bet for you. In fact, my own background is in theoretical physics, a field involving extensive numerical calculations, as well as graphical and charting representations of calculated data. I had dedicated my effort to this field for many years, starting from undergraduate up to Ph.D. My first computer experience was with FORTRAN. Later on, I had programming experience with Basic, C, C++, and MATLAB. I still remember how hard it was in the early days to present computational results graphically. I often spent hours creating a publication-quality chart by hand, using a ruler, graph paper, and rub-off lettering. A year later, our group bought a graphics and chart package. However, I still needed to prepare my data in a proper format in order to process the data with this package. During that time, I started paying attention to various development tools that could be used to create integrated applications. I tried to find an ideal development tool that would allow me not only to easily generate data (computation capability) but also to easily represent data graphically (graphics and chart power). The C# and Microsoft Visual Studio .NET development environment made it possible to develop such integrated applications. Ever since Microsoft .NET 1.0 came out, I have been in love with the C# language, and have been able to use this tool to successfully create powerful graphics and chart applications, including commercial CAD packages.

The majority of the example programs in this book can be routinely used by C# developers and technical professionals. Throughout this book, I will emphasize the usefulness of C# chart and graphics programming to real-world applications. If you follow this book closely, you will be able to easily develop various practical graphics and chart applications from simple 2D x-y plots to sophisticated 4D slice graphs. At the same time, I will not spend too much time discussing program style, execution speed, and code optimization, because there is a plethora of books out there already dealing with those topics. Most of the example programs in this book omit error handlings. This makes the code easier to understand by focusing on the key concepts.

What Do You Need to Use This Book

To make the best use of this book and understand the algorithm, you will need no special equipment. To run and modify the sample programs, you need a computer that is capable of running Windows 2000 or Windows XP operating system. The software installed on your computer should include Visual Studio .NET (or Visual C# .NET) standard edition or higher. If you want to run the samples included in Chapter 9, you also need Microsoft Excel installed on your computer.

All of the example programs in this book were created and tested in the professional version of Visual Studio .NET 2005 and Microsoft Excel 2002 (which is part of Microsoft Office XP) under Windows XP. They should run something with little or no modification in other operating systems and with other versions of Visual Studio .NET and Excel.

How This Book Is Organized

This book is organized into nine chapters, each of which focuses on a different topic about creating C# graphics and chart solutions. The following summaries of each chapter will give you an overview of this book’s contents:

Chapter 1, C# Graphics Basics
This chapter reviews some of the fundamental aspects of C# graphics programming. If you are an experienced C# programmer, some of this material may already be familiar to you. It includes discussions of various coordinate systems; basic graphics shapes in the GDI+ class, the color system, and advanced custom color maps used in C# applications.

Chapter 2, 2D Matrices and Transformations
This chapter covers mathematical basics for 2D graphics programming. 2D matrices and transformations in homogeneous space are discussed, including translation, scaling, reflection, and rotation. These 2D matrices and transformations allow a C# application to perform a wide variety of graphical operations on graphics objects in a simple and consistent manner.

Chapter 3, 2D Line Charts
This chapter contains instructions on how to create elementary 2D X-Y line charts. It introduces basic chart elements including chart area, plot area, axes, title, labels, ticks, symbols, legend, etc. These basic chart elements are common in the other types of charts, as well.

Chapter 4, Specialized 2D Charts
This chapter covers the specialized charts that are often found in commercial chart packages and spreadsheet applications. These specialized charts include bar charts, stair-step charts, stem charts, charts with error bars, pie charts, area charts, polar charts, as well as stock charts.

Chapter 5, 3D Matrices and Transformations
This chapter extends the concepts described in Chapter 2 into the third dimension. It explains how to define 3D graphics objects, and how to translate, scale, reflect, and rotate these 3D objects. It also describes the transformation matrices that represent projections and transformations that allow you to view 3D graphics objects on a 2D screen. Unlike 2D, there is no 3D matrix class defined in C# and GDI+. This chapter includes instructions on how to create these 3D transformation matrices with C#.

Chapter 6, 3D Charts
This extensive chapter begins with a description of the coordinate system that is used in 3D charts and graphics, and shows you how to create the 3D coordinate axes, tick marks, axis labels, and grid lines. It then explains techniques on how to create a wide variety of 3D charts that include 3D line charts, 3D mesh and surface charts, contour charts, 3D bar charts, 4D slice charts, and 3D combination charts. In creating these charts, a few specialized techniques, including Z-order, are used to manipulate the data displayed on your 2D computer screen.

Chapter 7, Charts and User Controls
This chapter shows you how to put 2D and 3D chart applications into a custom user control, and how to use such a control in your C# applications. It begins by explaining the basics of the custom user controls in a C# Windows application, including how to provide the design-time support to the controls. Then, it describes the detailed procedure for creating the custom user controls for 2D and 3D chart applications, and demonstrates how to use these controls in real-world C# applications.

Chapter 8, DataGridView and Chart User Controls
This chapter consists of a discussion on the basics of the DataGridView and the possibility of combining it with the chart controls to create spreadsheet-like chart applications. It shows how to implement spreadsheet-like interface in which the data is displayed in the DataGridView control; the displayed data in the DataGridView is plotted in the chart user controls; and the direct interaction is allowed between the DataGridView and the Chart controls.

Chapter 9, Excel Charts in C# Applications
This chapter explains how a Microsoft Excel chart can be embedded into a C# application. It shows how to implement charts and graphics in C# projects by taking advantage of the Excel’s chart and graphics features.

What Is Left Out

This book provides an in-depth description of C# chart and graphics programming for real-world .NET applications. The background material about the C# graphics was selected for inclusion in the book specifically according to the need for creating C# chart applications. It does not cover image processing, such as the technique for manipulating bitmapped images and image animation. Advanced ray traced images that display reflective, shadowed, transparent, and textured objects are beyond the scope of this book and are not addressed.

Conventions

This book uses a number of different styles of text and layout to help differentiate between different kinds of information. These conventions include

  • Italic: used for names of directories and files, options, emphasis, and names of examples.
  • Constant width: used for code listings and code items such as commands, options, variables, attributes, functions, types, classes, namespaces, methods, properties, parameters, values, objects, event handlers, contents of files, and the output from commands.
  • Using Code Examples

    You may use the code in this book in your applications and documentation. You do not need to contact me or the publisher for permission unless you are reproducing a significant portion of the code. For example, writing a program that uses several chunks of code from this book does not require permission. Selling or distributing the example code listings does require permission. Incorporating a significant amount of example code from this book into your applications and documentation does require permission. Integrating the example code from this book into your commercial products is not allowed without the written permission from the author and publisher.

    Customer Support

    I am always interested in hearing from readers, and want to know what you think about this book. You can send me your comments by e-mail to jxu@drxudotnet.com. I also provide updates, bug fixes, and ongoing support through the publisher’s web site:

    http://www.drxudotnet.com

    You can obtain the source code for all of the examples in this book from this web site.