<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rangel Avulso &#187; c#</title>
	<atom:link href="http://www.hrangel.com.br/index.php/cat/programacao/csharp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hrangel.com.br</link>
	<description>Idéias avulsas sobre assuntos variados!</description>
	<lastBuildDate>Wed, 09 Jun 2010 00:50:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Vida de Programador #1</title>
		<link>http://www.hrangel.com.br/index.php/2010/06/08/vida-de-programador-1/</link>
		<comments>http://www.hrangel.com.br/index.php/2010/06/08/vida-de-programador-1/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 00:50:21 +0000</pubDate>
		<dc:creator>HRangel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://www.hrangel.com.br/?p=162</guid>
		<description><![CDATA[Ha um tempo atrás criei outro blog o Between APIs. Pra poder falar do dia a dia de desenvolvedor sem ter que exagerar na dose aqui no Avulso. WPF, C#, .NET, PHP, Java, quem sabe Objective C e projetos para iPhone, é basicamente sobre isso o que falo por lá. O último post foi um [...]<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2010/06/08/vida-de-programador-1/">Vida de Programador #1</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Ha um tempo atrás criei outro blog o <a href="http://betweenapis.blogspot.com/" target="_blank">Between APIs</a>.</p>
<p>Pra poder falar do dia a dia de desenvolvedor sem ter que exagerar na dose aqui no Avulso.<br />
WPF, C#, .NET, PHP, Java, quem sabe Objective C e projetos para iPhone, é basicamente sobre isso o que falo por lá.</p>
<p>O último post foi um resumão dos problemas que encontrei durante o projeto atual que estou.<br />
1 &#8211; How to programmatically change the SelectedItem in a WPF TreeView<br />
2 &#8211; Popup tracking position of PlacementTarget<br />
3 &#8211; WPF Tutorial &#8211; Resizeable Popup | Switch on the Code<br />
4 &#8211; How to: Position a Popup<br />
5 &#8211; WPF UserControl in DataTemplate within ItemsControl &#8211; how to bind to parent<br />
6 &#8211; WPF: Binding to Properties in your UserControl or Window<br />
7 &#8211; How do you override the opacity of a parent control in WPF?<br />
8 &#8211; WPF Button IsEnabled Based on ComboBox Selection Overwriting default style</p>
<p>O link pro post <a href="http://betweenapis.blogspot.com/2010/06/wpf-7-several-tips.html">é esse aqui</a>.<br />
Passem lá pra ver, se alguém tiver interesse em programação, senão já aviso que é conteúdo nerd!</p>
<p>Até mais galera!</p>
<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2010/06/08/vida-de-programador-1/">Vida de Programador #1</a></p>
<h3  class="related_post_title">Artigos relacionados</h3><ul class="related_post"><li>Nenhum artigo relacionado</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hrangel.com.br/index.php/2010/06/08/vida-de-programador-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ToolTips e Cópia para Área de Transferência</title>
		<link>http://www.hrangel.com.br/index.php/2008/11/11/tooltips-e-copia-para-area-de-transferencia/</link>
		<comments>http://www.hrangel.com.br/index.php/2008/11/11/tooltips-e-copia-para-area-de-transferencia/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 21:41:28 +0000</pubDate>
		<dc:creator>HRangel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[windows form]]></category>
		<category><![CDATA[clipboard]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tooltip]]></category>

		<guid isPermaLink="false">http://www.hrangel.com.br/?p=140</guid>
		<description><![CDATA[Mais duas dicas de C# (.NET). Vou tentar postar pelo menos uma dica todo final de dia. Será que agora vai? Começando por como criar uma ToolTip em Windows Form. Passos bem simples: Abra seu formulário em Design View Adicione todos os campos que deseja. Entre na toolbar Toolbox (é Ferramentas em português?) &#62; Common Controls &#62; Tooltip [...]<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2008/11/11/tooltips-e-copia-para-area-de-transferencia/">ToolTips e Cópia para Área de Transferência</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Mais duas dicas de <strong>C# (.NET)</strong>. Vou tentar postar pelo menos uma dica todo final de dia. Será que agora vai?</p>
<p>Começando por como criar uma <strong>ToolTip</strong> em <strong>Windows Form</strong>.</p>
<p>Passos bem simples:</p>
<ol>
<li>Abra seu formulário em Design View</li>
<li>Adicione todos os campos que deseja.</li>
<li>Entre na toolbar <strong>Toolbox</strong> (é Ferramentas em português?) &gt; Common Controls &gt; Tooltip e arraste uma para seu Formulário (<strong>Form</strong>) &#8211; se não for permitido arrastar para qualquer lugar arraste em cima de um dos controles que vão usa-la. Ela irá aparecer na parte inferior da tela do formulário.</li>
<li>Agora basta clicar no controle e abrir suar propriedades</li>
<li>Edite a propriedade Tooltip on [Nome ToolTip] com o texto que deseja que apareça no Mouse Hover do campo.</li>
<li>Caso queira adicionar título na TooTip basta clicar no objeto dela e em seguida em propriedades. Mude a propriedade ToolTipTitle e voilá!</li>
</ol>
<div>Documentação da classe: <a title="ToolTip na MSDN" href="http://msdn.microsoft.com/en-us/library/system.windows.forms.tooltip.aspx" target="_blank">ToolTip na MSDN</a></div>
<p>A segunda é pra quem quer <strong>copiar para área de transferência programaticamente</strong> (mais conhecido como Ctrl + C via programação), também conhecida por <strong>Clipboard</strong>. Pronto só de falar o nome em inglês já praticamente mata a charada! Óia o código:</p>
<pre class="brush: csharp;">
String sTexto = txtTextoDoUsuario.Text;
Clipboard.SetText(sTexto, TextDataFormat.Text);
</pre>
<p>Pra quem quiser ir mais a fundo a classe <a title="Clipboard na MSDN" href="http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx" target="_blank">Clipboard</a> da acesso a &#8220;setar&#8221; mais coisas, como <a title="Metodo para adicionar Objectos a Clipboard" href="http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.setdataobject.aspx" target="_blank">Objects</a>, <a title="Metodo para adicionar Imagens a Clipboard" href="http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.setimage.aspx" target="_blank">Imagens</a>, além de <a title="Métodos da classe Clipboard" href="http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard_methods.aspx" target="_blank">outros métodos para pegar valores da área de transferência</a>.</p>
<p>Por hoje é só!</p>
<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2008/11/11/tooltips-e-copia-para-area-de-transferencia/">ToolTips e Cópia para Área de Transferência</a></p>
<h3  class="related_post_title">Artigos relacionados</h3><ul class="related_post"><li><a href="http://www.hrangel.com.br/index.php/2008/10/20/mudando-cursor-de-posicao-em-textbox-windowsform/" title="Mudando cursor de posição em TextBox WindowsForm">Mudando cursor de posição em TextBox WindowsForm</a></li><li><a href="http://www.hrangel.com.br/index.php/2006/12/04/converter-pdf-para-imagem-jpeg-em-c/" title="Converter PDF para Imagem (JPEG) em C#">Converter PDF para Imagem (JPEG) em C#</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hrangel.com.br/index.php/2008/11/11/tooltips-e-copia-para-area-de-transferencia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mudando cursor de posição em TextBox WindowsForm</title>
		<link>http://www.hrangel.com.br/index.php/2008/10/20/mudando-cursor-de-posicao-em-textbox-windowsform/</link>
		<comments>http://www.hrangel.com.br/index.php/2008/10/20/mudando-cursor-de-posicao-em-textbox-windowsform/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 00:49:51 +0000</pubDate>
		<dc:creator>HRangel</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[textbox]]></category>
		<category><![CDATA[windows controls]]></category>

		<guid isPermaLink="false">http://www.hrangel.com.br/?p=125</guid>
		<description><![CDATA[Post rápido só pra voltar a postar. Dica de C#, mais precisamente de Windows Controls. Pra facilitar o dia a dia do desenvolvedor. Fez uma função nova e quer mudar a posição do cursor de algum TextBox que já tá preenchido? Aí vaí: // Nesse caso vamos setar o índice para o fim do textbox // [...]<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2008/10/20/mudando-cursor-de-posicao-em-textbox-windowsform/">Mudando cursor de posição em TextBox WindowsForm</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Post rápido só pra voltar a postar.</p>
<p>Dica de <strong>C#</strong>, mais precisamente de <strong>Windows Controls</strong>. Pra facilitar o dia a dia do desenvolvedor. Fez uma função nova e quer mudar a <strong>posição do cursor</strong> de algum <strong>TextBox</strong> que já tá preenchido?<br />
Aí vaí:</p>
<pre class="brush: csharp;">
// Nesse caso vamos setar o índice para o fim do textbox
// para levarmos o cursor e o scroll para o fim do texto box
int iPosicaoDoCursor = txtMeuTextBox.Text.length;
txtMeuTextBox.SelectionStart = iPosicaoDoCursor;
txtMeuTextBox.ScrollToCaret();
</pre>
<p>Pronto, uma pequena combinção do <strong>SelectionStart</strong> com o método <strong>ScrollToCaret()</strong> e o textbox fica com o cursor na posição que queremos.</p>
<p>Mais dicas por vir, agora com mais frequência! C#, PHP e muito mais!</p>
<p>Abraços</p>
<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2008/10/20/mudando-cursor-de-posicao-em-textbox-windowsform/">Mudando cursor de posição em TextBox WindowsForm</a></p>
<h3  class="related_post_title">Artigos relacionados</h3><ul class="related_post"><li><a href="http://www.hrangel.com.br/index.php/2008/11/11/tooltips-e-copia-para-area-de-transferencia/" title="ToolTips e Cópia para Área de Transferência">ToolTips e Cópia para Área de Transferência</a></li><li><a href="http://www.hrangel.com.br/index.php/2006/12/04/converter-pdf-para-imagem-jpeg-em-c/" title="Converter PDF para Imagem (JPEG) em C#">Converter PDF para Imagem (JPEG) em C#</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hrangel.com.br/index.php/2008/10/20/mudando-cursor-de-posicao-em-textbox-windowsform/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Converter PDF para Imagem (JPEG) em C#</title>
		<link>http://www.hrangel.com.br/index.php/2006/12/04/converter-pdf-para-imagem-jpeg-em-c/</link>
		<comments>http://www.hrangel.com.br/index.php/2006/12/04/converter-pdf-para-imagem-jpeg-em-c/#comments</comments>
		<pubDate>Mon, 04 Dec 2006 16:45:45 +0000</pubDate>
		<dc:creator>HRangel</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://www.hrangel.com.br/index.php/2006/12/09/converter-pdf-para-imagem-jpeg-em-c/</guid>
		<description><![CDATA[Esse vai ser o primeiro post sobre realmente o que faço no dia-a-dia, programação em C#. Bom, é simples e rápido, estava procurando já faz um tempo de converter PDF&#8217;s pra imagem em runtime. Procurei por toda a net e quando achei decidi publicar pois muita gente estava com a mesma dúvida. Espero que possa [...]<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2006/12/04/converter-pdf-para-imagem-jpeg-em-c/">Converter PDF para Imagem (JPEG) em C#</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Esse vai ser o primeiro post sobre realmente o que faço no dia-a-dia, programação em C#.</p>
<p>Bom, é simples e rápido, estava procurando já faz um tempo de converter PDF&#8217;s pra imagem em runtime.<br />
Procurei por toda a net e quando achei decidi publicar pois muita gente estava com a mesma dúvida.<br />
Espero que possa ajudar!!</p>
<p>O que você vai precisar para fazer isso:<br />
- Dll &#8220;gsdll32.dll&#8221; do <a href="http://www.cs.wisc.edu/%7Eghost/" target="_blank">Ghostscript</a>, não tenho certeza se tem a DLL &#8220;solta&#8221;, mas se for o caso instale que a dll vai estar na pasta bin, do diretório de instalação.<br />
- Copiar essa DLL para a pasta do executável (caso o projeto seja Windows Form) ou para a pasta que contém a DLL de execução do código (pasta Bin de Sites criados pelo VS2003);</p>
<p>[UPDATE]Como to vendo muita procura sobre esse post, vou escrever um tutorial melhor para facilitar a vida da galera que precisa usar essa ferramenta, mas primeiro vou dar uma pesquisada se não inventaram nada melhor. I&#8217;ll be back[/UPDATE]</p>
<p><strong> </strong><span id="more-13"></span></p>
<p>Segue o código da classe que eu criei para converter arquivos PDF para imagens JPG:</p>
<pre class="brush: csharp;">
using System;
using System.Collections;
using System.Runtime.InteropServices;

namespace Utilities.Class
{
public class PDFConvert
{
[DllImport(&quot;gsdll32.dll&quot;, EntryPoint=&quot;gsapi_new_instance&quot;)]
private static extern int gsapi_new_instance (out IntPtr pinstance, IntPtr caller_handle);&lt;/code&gt;

[DllImport(&quot;gsdll32.dll&quot;, EntryPoint=&quot;gsapi_init_with_args&quot;)]
private static extern int gsapi_init_with_args (IntPtr instance, int argc, IntPtr argv);

[DllImport(&quot;gsdll32.dll&quot;, EntryPoint=&quot;gsapi_exit&quot;)]
private static extern int gsapi_exit (IntPtr instance);

[DllImport(&quot;gsdll32.dll&quot;, EntryPoint=&quot;gsapi_delete_instance&quot;)]
private static extern void gsapi_delete_instance (IntPtr instance);

private string _sOutputFile;
private string _sInputFile;

private int _iWidth;
private int _iHeight;
private int _iResolutionX;
private int _iResolutionY;
private int _iJPEGQuality;

private Boolean _bFitPage;

private IntPtr _objHandle;

public GSPDFConvert(IntPtr objHandle)
{
_objHandle = objHandle;
}

public GSPDFConvert()
{
_objHandle = IntPtr.Zero;
}

public string InputFile
{
get { return _sInputFile; }
set { _sInputFile = value; }
}

public string OutputFile
{
get { return _sOutputFile; }
set { _sOutputFile = value; }
}

public int Width
{
get { return _iWidth; }
set { _iWidth = value; }
}

public int Height
{
get { return _iHeight; }
set { _iHeight = value; }
}

public int ResolutionX
{
get { return _iResolutionX; }
set { _iResolutionX = value; }
}

public int ResolutionY
{
get { return _iResolutionY; }
set { _iResolutionY = value; }
}

public Boolean FitPage
{
get { return _bFitPage; }
set { _bFitPage = value; }
}

public int JPEGQuality
{
get { return _iJPEGQuality; }
set { _iJPEGQuality = value; }
}

private byte[] StringToAnsiZ(string str)
{
//' Convert a Unicode string to a null terminated Ansi string for Ghostscript.
//' The result is stored in a byte array.  Later you will need to convert
//' this byte array to a pointer with GCHandle.Alloc(XXXX, GCHandleType.Pinned)
//' and GSHandle.AddrOfPinnedObject()
int  intElementCount;
int  intCounter;
byte[] aAnsi;
byte bChar;

intElementCount = str.Length;
aAnsi = new byte[intElementCount+1];
for(intCounter = 0; intCounter &lt; intElementCount;intCounter++)
{
bChar = (byte)str[intCounter];
aAnsi[intCounter] = bChar;
}

aAnsi[intElementCount] = 0;
return aAnsi;
}
public void Run()
{
int intReturn;
IntPtr intGSInstanceHandle;
object[] aAnsiArgs;
IntPtr[] aPtrArgs;
GCHandle[] aGCHandle;
int  intCounter;
int intElementCount;
IntPtr callerHandle;
GCHandle gchandleArgs;
IntPtr intptrArgs;

string[] sArgs = GetGeneratedArgs();

// Convert the Unicode strings to null terminated ANSI byte arrays
// then get pointers to the byte arrays.
intElementCount = sArgs.Length;
aAnsiArgs = new object[intElementCount];
aPtrArgs = new IntPtr[intElementCount];
aGCHandle = new GCHandle[intElementCount];

for(intCounter = 0; intCounter&lt; intElementCount; intCounter++)
{
aAnsiArgs[intCounter] = StringToAnsiZ(sArgs[intCounter]);
aGCHandle[intCounter] = GCHandle.Alloc(aAnsiArgs[intCounter], GCHandleType.Pinned);
aPtrArgs[intCounter] = aGCHandle[intCounter].AddrOfPinnedObject();
}
gchandleArgs = GCHandle.Alloc(aPtrArgs, GCHandleType.Pinned);
intptrArgs = gchandleArgs.AddrOfPinnedObject();

intReturn = gsapi_new_instance(out intGSInstanceHandle, _objHandle);
callerHandle = IntPtr.Zero;
intReturn = gsapi_init_with_args(intGSInstanceHandle, intElementCount, intptrArgs);
for(intCounter = 0; intCounter
{
aGCHandle[intCounter].Free();
}
gchandleArgs.Free();
gsapi_delete_instance(intGSInstanceHandle);
gsapi_exit(intGSInstanceHandle);
}

private string[] GetGeneratedArgs()
{
// Count how many extra args are need - HRangel - 11/29/2006, 3:13:43 PM
ArrayList lstExtraArgs = new ArrayList();

if (_iJPEGQuality &gt; 0 &amp;amp;amp;&amp;amp;amp; _iJPEGQuality &lt; 101)
lstExtraArgs.Add(&quot;-dJPEGQ=&quot; + _iJPEGQuality);

if (_iWidth &gt; 0 &amp;amp;amp;&amp;amp;amp; _iHeight &gt; 0)
lstExtraArgs.Add(&quot;-g&quot; + _iWidth + &quot;x&quot; + _iHeight);

if (_bFitPage)
lstExtraArgs.Add(&quot;-dPDFFitPage&quot;);

if (_iResolutionX &gt; 0)
{
if (_iResolutionY &gt; 0)
lstExtraArgs.Add(&quot;-r&quot; + _iResolutionX + &quot;x&quot; + _iResolutionY);
else
lstExtraArgs.Add(&quot;-r&quot; + _iResolutionX);
}

// Load Fixed Args - HRangel - 11/29/2006, 3:34:02 PM
int iFixedCount = 7;
int iExtraArgsCount = lstExtraArgs.Count;
string[] args = new string[iFixedCount + lstExtraArgs.Count];
args[0]=&quot;pdf2jpg&quot;;
args[1]=&quot;-dNOPAUSE&quot;;
args[2]=&quot;-dBATCH&quot;;
args[3]=&quot;-dSAFER&quot;;
args[4]=&quot;-sDEVICE=jpeg&quot;;

for (int i=0; i &lt; iExtraArgsCount; i++)
{
args[5+i] = (string) lstExtraArgs[i];
}

args[5 + iExtraArgsCount]=&quot;-sOutputFile=&quot;+_sOutputFile;
args[6 + iExtraArgsCount] = _sInputFile;

return args;
}
}
}
</pre>
<p>Se alguém precisar de ajuda pra entender o código me avisa.</p>
<p>Abs</p>
<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2006/12/04/converter-pdf-para-imagem-jpeg-em-c/">Converter PDF para Imagem (JPEG) em C#</a></p>
<h3  class="related_post_title">Artigos relacionados</h3><ul class="related_post"><li><a href="http://www.hrangel.com.br/index.php/2008/11/11/tooltips-e-copia-para-area-de-transferencia/" title="ToolTips e Cópia para Área de Transferência">ToolTips e Cópia para Área de Transferência</a></li><li><a href="http://www.hrangel.com.br/index.php/2008/10/20/mudando-cursor-de-posicao-em-textbox-windowsform/" title="Mudando cursor de posição em TextBox WindowsForm">Mudando cursor de posição em TextBox WindowsForm</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hrangel.com.br/index.php/2006/12/04/converter-pdf-para-imagem-jpeg-em-c/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

