Jump to content

MingNET

Newbies
  • Posts

    2
  • Joined

  • Last visited

MingNET's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Conversation Starter
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

1

Reputation

  1. Nevermind, I was able to figure it out. I needed to change the Target framework to .NET 4.6
  2. Hello, I've been following the CodeLab tutorials, and they are awesome! I'm currently at the 'Moving beyond CodeLab to Visual Studio' tutorial, but I'm currently stuck at generating the DLL file. Basically, I am able to build the program without an errors, but when I check my /bin/debug/ folder, there's no DLL file that is generated. This is the source code that I get when I check the 'View Source' box in CodeLab: // Compiler options: /unsafe /optimize /res:"C:\Users\william.huang\Documents\Paint.NET Plugins\Tutorial\ColorBalanceOld.png","MyScriptEffect.ColorBalanceOld.png" /debug- /target:library /out:"C:\Users\william.huang\Desktop\MyScript.dll" using System; using System.IO; using System.Linq; using System.Drawing; using System.Threading; using System.Reflection; using System.Drawing.Text; using System.Windows.Forms; using System.IO.Compression; using System.Drawing.Drawing2D; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Runtime.InteropServices; using Registry = Microsoft.Win32.Registry; using RegistryKey = Microsoft.Win32.RegistryKey; using PaintDotNet; using PaintDotNet.Effects; using PaintDotNet.AppModel; using PaintDotNet.IndirectUI; using PaintDotNet.Collections; using PaintDotNet.PropertySystem; using IntSliderControl = System.Int32; using CheckboxControl = System.Boolean; using ColorWheelControl = PaintDotNet.ColorBgra; using AngleControl = System.Double; using PanSliderControl = PaintDotNet.Pair<double,double>; using TextboxControl = System.String; using DoubleSliderControl = System.Double; using ListBoxControl = System.Byte; using RadioButtonControl = System.Byte; using ReseedButtonControl = System.Byte; using MultiLineTextboxControl = System.String; using RollControl = System.Tuple<double, double, double>; [assembly: AssemblyTitle("MyScript Plugin for Paint.NET")] [assembly: AssemblyDescription("MyScript selected pixels")] [assembly: AssemblyConfiguration("myscript")] [assembly: AssemblyCompany("William")] [assembly: AssemblyProduct("MyScript")] [assembly: AssemblyCopyright("Copyright © William")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] [assembly: AssemblyVersion("1.0.*")] namespace MyScriptEffect { public class PluginSupportInfo : IPluginSupportInfo { public string Author { get { return ((AssemblyCopyrightAttribute)base.GetType().Assembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false)[0]).Copyright; } } public string Copyright { get { return ((AssemblyDescriptionAttribute)base.GetType().Assembly.GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false)[0]).Description; } } public string DisplayName { get { return ((AssemblyProductAttribute)base.GetType().Assembly.GetCustomAttributes(typeof(AssemblyProductAttribute), false)[0]).Product; } } public Version Version { get { return base.GetType().Assembly.GetName().Version; } } public Uri WebsiteUri { get { return new Uri("http://www.getpaint.net/redirect/plugins.html"); } } } [PluginSupportInfo(typeof(PluginSupportInfo), DisplayName = "My effect")] public class MyScriptEffectPlugin : PropertyBasedEffect { public static string StaticName { get { return "My effect"; } } public static Image StaticIcon { get { return new Bitmap(typeof(MyScriptEffectPlugin), "ColorBalanceOld.png"); } } public static string SubmenuName { get { return SubmenuNames.Artistic; } } public MyScriptEffectPlugin() : base(StaticName, StaticIcon, SubmenuName, EffectFlags.Configurable) { } private void OnWindowHelpButtonClicked(IWin32Window owner, string helpContent) { if (helpContent.ToLower().StartsWith("http://") || helpContent.ToLower().StartsWith("https://")) { PaintDotNet.ServiceProviderExtensions.GetService<IShellService>(Services).LaunchUrl(null, helpContent); } } public enum PropertyNames { Amount1, Amount2, Amount3 } protected override PropertyCollection OnCreatePropertyCollection() { List<Property> props = new List<Property>(); props.Add(new Int32Property(PropertyNames.Amount1, 0,-100,100)); props.Add(new Int32Property(PropertyNames.Amount2, 0,-100,100)); props.Add(new Int32Property(PropertyNames.Amount3, 0,-100,100)); return new PropertyCollection(props); } protected override ControlInfo OnCreateConfigUI(PropertyCollection props) { ControlInfo configUI = CreateDefaultConfigUI(props); configUI.SetPropertyControlValue(PropertyNames.Amount1, ControlInfoPropertyNames.DisplayName, "Cyan - Red"); configUI.SetPropertyControlValue(PropertyNames.Amount2, ControlInfoPropertyNames.DisplayName, "Magenta - Green"); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.DisplayName, "Yellow - Blue"); return configUI; } protected override void OnSetRenderInfo(PropertyBasedEffectConfigToken newToken, RenderArgs dstArgs, RenderArgs srcArgs) { Amount1 = newToken.GetProperty<Int32Property>(PropertyNames.Amount1).Value; Amount2 = newToken.GetProperty<Int32Property>(PropertyNames.Amount2).Value; Amount3 = newToken.GetProperty<Int32Property>(PropertyNames.Amount3).Value; base.OnSetRenderInfo(newToken, dstArgs, srcArgs); } protected override void OnCustomizeConfigUIWindowProperties(PropertyCollection props) { // Add help button to effect UI props[ControlInfoPropertyNames.WindowHelpContentType].Value = WindowHelpContentType.CustomViaCallback; props[ControlInfoPropertyNames.WindowHelpContent].Value = "http://www.getpaint.net/redirect/plugins.html"; base.OnCustomizeConfigUIWindowProperties(props); } protected override unsafe void OnRender(Rectangle[] rois, int startIndex, int length) { if (length == 0) return; for (int i = startIndex; i < startIndex + length; ++i) { Render(DstArgs.Surface,SrcArgs.Surface,rois[i]); } } #region User Entered Code #region UICode int Amount1=0; //[-100,100]Cyan - Red int Amount2=0; //[-100,100]Magenta - Green int Amount3=0; //[-100,100]Yellow - Blue #endregion private byte Clamp2Byte(int iValue) { if (iValue<0) return 0; if (iValue>255) return 255; return (byte)iValue; } void Render(Surface dst, Surface src, Rectangle rect) { ColorBgra CurrentPixel; int R, G, B; for(int y = rect.Top; y < rect.Bottom; y++) { for (int x = rect.Left; x < rect.Right; x++) { CurrentPixel = src[x,y]; R = (int)CurrentPixel.R; G = (int)CurrentPixel.G; B = (int)CurrentPixel.B; // Cyan - Red adjustment R = R + Amount1; G = G - (Amount1 / 2); B = B - (Amount1 / 2); // Magenta - Green adjustment G = G + Amount2; R = R - (Amount2 / 2); B = B - (Amount2 / 2); // Yellow - Blue adjustment B = B + Amount3; R = R - (Amount3 / 2); G = G - (Amount3 / 2); // Reassemble the color from R, G, and B CurrentPixel = ColorBgra.FromBgra(Clamp2Byte(B),Clamp2Byte(G),Clamp2Byte(R),CurrentPixel.A); dst[x,y] = CurrentPixel; } } } #endregion } } And I am using Visual Studio 2017.
×
×
  • Create New...