Jump to content

Recommended Posts

TechnoRobbo's Export Selection


Exports irregular shaped selections to PNG


 


v1.2 - Persistent Folder


V1.1 - Code Clean up - avoids potential memory hole.


 


Menu: Effects->Selection



 


 


Source Code for CodeLab


Hidden Content:



// Submenu: Selection
// Name: TR's Export Selection
// Title: TR's Export Selection- v1.2
// Author: TechnoRobbo
// URL: http://www.technorobbo.com


System.Drawing.Bitmap bMap;
private void savepng()
{
    System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(saver));
    t.SetApartmentState(System.Threading.ApartmentState.STA); 
    t.Start();
    t.Join();   
}


private string GetFileName()
{
    System.Windows.Forms.SaveFileDialog OpenFileDialog1= new System.Windows.Forms.SaveFileDialog();
    string fp = Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
    Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("TechnoRobbo");


    if (rk != null)
    {
        try
        {
            fp = (string)rk.GetValue("ExportSelectionPath");
            if (!System.IO.Directory.Exists(fp)) fp = Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);


        }
        catch
        {
            fp = Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
        }
    }


    OpenFileDialog1.InitialDirectory = fp;
    OpenFileDialog1.Filter = "PNG file (*.png)|*.png";
    OpenFileDialog1.FilterIndex = 1;
    OpenFileDialog1.RestoreDirectory = false;
    if (OpenFileDialog1.ShowDialog() == DialogResult.OK)
    {
        Microsoft.Win32.RegistryKey key;
        key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("TechnoRobbo");
        key.SetValue("ExportSelectionPath", System.IO.Path.GetDirectoryName(OpenFileDialog1.FileName));
        key.Close();
        return OpenFileDialog1.FileName;
    }
    return String.Empty;


}


private void saver()
{


     string fp = GetFileName();//Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
     if ( !fp.Equals( String.Empty))
     {
       bMap.Save(fp);
     }
}


void Render(Surface dst, Surface src, Rectangle rect)
{
    Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt();


    if (IsCancelRequested) return;
    SignalCancelRequest();
    System.Windows.Forms.Application.DoEvents();
    
    bMap =new Bitmap(selection.Width, selection.Height);
    string fp = Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
                


    PdnRegion selectionRegion = EnvironmentParameters.GetSelection(src.Bounds);
    try
    {
        Graphics g = Graphics.FromImage(bMap);
        Region reg = new Region(selectionRegion.GetRegionData());
        reg.Translate(-selection.Left, -selection.Top);
        g.SetClip(reg, System.Drawing.Drawing2D.CombineMode.Replace);
        g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
        GraphicsUnit units = GraphicsUnit.Pixel;
        g.DrawImage(src.CreateAliasedBitmap(),new Rectangle(0,0,selection.Width, selection.Height), selection ,units);
        g.Dispose();
        reg.Dispose();
        savepng();
    }
    catch { }
}


 


TRsExportSelection.zip

  • Upvote 6

Go out there and be amazing. Have Fun, TR
TRsSig.png?raw=1
Some Pretty Pictures Some Cool Plugins

Link to post
Share on other sites
  • 10 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...