nanoFramework.Graphics 1.0.2-preview.8

Prefix Reserved
This is a prerelease version of nanoFramework.Graphics.
There is a newer version of this package available.
See the version list below for details.
dotnet add package nanoFramework.Graphics --version 1.0.2-preview.8                
NuGet\Install-Package nanoFramework.Graphics -Version 1.0.2-preview.8                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="nanoFramework.Graphics" Version="1.0.2-preview.8" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add nanoFramework.Graphics --version 1.0.2-preview.8                
#r "nuget: nanoFramework.Graphics, 1.0.2-preview.8"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install nanoFramework.Graphics as a Cake Addin
#addin nuget:?package=nanoFramework.Graphics&version=1.0.2-preview.8&prerelease

// Install nanoFramework.Graphics as a Cake Tool
#tool nuget:?package=nanoFramework.Graphics&version=1.0.2-preview.8&prerelease                

Quality Gate Status Reliability Rating License NuGet #yourfirstpr Discord

nanoFramework logo


Welcome to the .NET nanoFramework Graphics repository

Build status

Component Build Status NuGet Package
nanoFramework.Graphics Build Status NuGet
nanoFramework.Graphics (preview) Build Status alternate text is missing from this package README image

Usage

Important:

  • This library is still work in progress. There may be breaking changes happening while work on this library progresses.
  • So far only SPI interface has been implemented.

Check the samples for more detailed usage.

Initializing the screen

It is important to understand that the driver will be loaded when the screen routing will be initialized from the managed code. Also keep in mind that most screens are actually smaller than the size the driver is capable of handling, also that the real screen can start at a position that is not the typical origin (0,0).

You must initialize the screen before being able to create a bitmap or display anything.

This code snippet works with the ESP32 WROVER KIT pinout, in this case, the screen size matches the driver size:


const int backLightPin = 5;
const int chipSelect = 22;
const int dataCommand = 21;
const int reset = 18;
const int screenWidth = 320;
const int screenHeight = 240;
DisplayControl.Initialize(new SpiConfiguration(1, chipSelect, dataCommand, reset, backLightPin), new ScreenConfiguration(0, 0, screenWidth, screenHeight), screenBufferSize);

This code snippet is for a M5 Stick where the screen size is smaller than the driver size and starts an offset position of X=26 and Y=1 coordinate:

int backLightPin = -1; // Not managed thru ESP32 but thru AXP192
int chipSelect = 5;
int dataCommand = 23;
int reset = 18;
Configuration.SetPinFunction(4, DeviceFunction.SPI1_MISO); // 4 is unused but necessary
Configuration.SetPinFunction(15, DeviceFunction.SPI1_MOSI);
Configuration.SetPinFunction(13, DeviceFunction.SPI1_CLOCK);
DisplayControl.Initialize(new SpiConfiguration(1, chipSelect, dataCommand, reset, backLightPin), new ScreenConfiguration(26, 1, 80, 160), 10 * 1024);

Note that depending on your target, especially for ESP32, you may have to setup the pins. Even if physically not used, the MISO pin must be setup to a valid pin.

As you can see it is possible as well not to define the backlight pin. It is the same for the rest pins. Both can be set to -1. Note that in most of the cases, both are connected and needed. In the case of the M5 Stick, the backlight pin is managed thru an AXP192. If you don't switch on the backlight pin, your screen will always be black. It is important to check how this pin can be switched on.

Feedback and documentation

For documentation, providing feedback, issues and finding out how to contribute please refer to the Home repo.

Join our Discord community here.

Credits

The list of contributors to this project can be found at CONTRIBUTORS.

License

The nanoFramework Class Libraries are licensed under the MIT license.

Code of Conduct

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behaviour in our community. For more information see the .NET Foundation Code of Conduct.

.NET Foundation

This project is supported by the .NET Foundation.

Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (8)

Showing the top 5 NuGet packages that depend on nanoFramework.Graphics:

Package Downloads
nanoFramework.M5Core2

This package includes the nanoFramework.M5Core2 assembly for .NET nanoFramework C# projects.

nanoFramework.M5StickC

This package includes the nanoFramework.M5StickC assembly for .NET nanoFramework C# projects.

nanoFramework.M5Core

This package includes the nanoFramework.M5Core assembly for .NET nanoFramework C# projects.

nanoFramework.M5StickCPlus

This package includes the nanoFramework.M5StickCPlus assembly for .NET nanoFramework C# projects.

nanoFramework.Fire

This package includes the nanoFramework.Fire assembly for .NET nanoFramework C# projects.

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on nanoFramework.Graphics:

Repository Stars
nanoframework/Samples
🍬 Code samples from the nanoFramework team used in testing, proof of concepts and other explorational endeavours
nanoframework/nanoFramework.IoT.Device
📦 This repo includes .NET nanoFramework implementations for various sensors, chips, displays, hats and drivers
Version Downloads Last updated
1.2.22 911 10/14/2024
1.2.21 1,118 9/26/2024
1.2.15 2,530 6/26/2024
1.2.10 1,098 5/13/2024
1.2.4 5,049 11/9/2023
1.2.2 174 11/9/2023
1.1.37 5,963 5/10/2023
1.1.34 279 5/5/2023
1.1.32 194 5/5/2023
1.1.30 188 5/5/2023
1.1.28 662 5/4/2023
1.1.25 343 4/18/2023
1.1.23 3,440 3/15/2023
1.1.21 967 3/10/2023
1.1.17 11,178 12/22/2022
1.1.13 14,313 10/11/2022
1.1.10 419 10/11/2022
1.1.8 2,069 10/7/2022
1.1.5 2,035 10/6/2022
1.0.3.6 28,481 7/29/2022
1.0.3.4 12,343 7/6/2022
1.0.3.2 25,789 6/2/2022
1.0.2 49,348 3/28/2022
1.0.2-preview.20 139 3/28/2022
1.0.2-preview.18 182 3/18/2022
1.0.2-preview.16 180 3/14/2022
1.0.2-preview.15 177 3/8/2022
1.0.2-preview.12 301 2/17/2022
1.0.2-preview.11 200 2/4/2022
1.0.2-preview.10 250 1/28/2022
1.0.2-preview.8 157 1/28/2022
1.0.2-preview.7 207 1/25/2022
1.0.2-preview.6 173 1/21/2022
1.0.2-preview.5 144 1/20/2022
1.0.2-preview.3 284 12/28/2021
1.0.1 1,225 12/4/2021
1.0.1-preview.24 155 12/4/2021
1.0.1-preview.22 158 12/3/2021
1.0.1-preview.20 152 12/3/2021
1.0.1-preview.18 153 12/2/2021
1.0.1-preview.16 160 12/2/2021
1.0.1-preview.14 156 12/2/2021
1.0.1-preview.12 157 12/1/2021
1.0.1-preview.11 159 12/1/2021
1.0.1-preview.8 501 10/22/2021
1.0.1-preview.7 225 10/19/2021
1.0.1-preview.5 194 10/17/2021
1.0.0 719 7/16/2021
1.0.0-preview.71 165 7/16/2021
1.0.0-preview.70 178 7/15/2021
1.0.0-preview.69 184 7/14/2021
1.0.0-preview.68 281 6/19/2021
1.0.0-preview.67 173 6/7/2021
1.0.0-preview.66 196 6/7/2021
1.0.0-preview.65 216 6/6/2021
1.0.0-preview.64 201 5/31/2021
1.0.0-preview.63 201 5/31/2021
1.0.0-preview.62 195 5/30/2021
1.0.0-preview.61 173 5/26/2021
1.0.0-preview.60 227 5/21/2021
1.0.0-preview.59 154 5/19/2021
1.0.0-preview.58 192 5/19/2021
1.0.0-preview.57 163 5/15/2021
1.0.0-preview.56 182 5/13/2021
1.0.0-preview.55 190 5/11/2021
1.0.0-preview.54 231 5/6/2021
1.0.0-preview.53 151 5/5/2021
1.0.0-preview.52 151 5/5/2021
1.0.0-preview.47 200 4/10/2021
1.0.0-preview.43 271 3/21/2021
1.0.0-preview.41 320 3/2/2021
1.0.0-preview.38 292 1/6/2021
1.0.0-preview.36 773 12/29/2020
1.0.0-preview.34 180 12/28/2020
1.0.0-preview.32 271 12/22/2020
1.0.0-preview.27 254 12/11/2020
1.0.0-preview.25 269 10/21/2020
1.0.0-preview.23 263 10/21/2020
1.0.0-preview.21 242 10/20/2020
1.0.0-preview.19 314 10/1/2020
1.0.0-preview.17 294 7/2/2020
1.0.0-preview.15 261 7/1/2020
1.0.0-preview.13 298 6/30/2020
1.0.0-preview.11 268 6/16/2020
1.0.0-preview.7 274 6/12/2020
1.0.0-preview.6 246 9/19/2020
1.0.0-preview.5 281 6/12/2020
1.0.0-preview.4 249 9/19/2020
1.0.0-preview.2 263 9/19/2020
1.0.0-preview.1 290 5/23/2020