<?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; programação</title>
	<atom:link href="http://www.hrangel.com.br/index.php/cat/programacao/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>Google Chrome Beta disponível!</title>
		<link>http://www.hrangel.com.br/index.php/2008/09/02/google-chrome-beta-disponivel/</link>
		<comments>http://www.hrangel.com.br/index.php/2008/09/02/google-chrome-beta-disponivel/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 19:11:11 +0000</pubDate>
		<dc:creator>HRangel</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[aplicativos]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[novidades]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[google chrome]]></category>

		<guid isPermaLink="false">http://www.hrangel.com.br/?p=123</guid>
		<description><![CDATA[Bom, Só pra avisar os desavisados que o Google Chrome Beta está disponível pra download, eu já to testando ele, aliás esse post tá sendo escrito nele, tudo funcionando bem por enquanto. http://www.google.com/chrome Espero que a informação seja útil para todos os geeks e nerds que não conseguem esperar mais. Google Chrome Beta disponível! Artigos [...]<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2008/09/02/google-chrome-beta-disponivel/">Google Chrome Beta disponível!</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Bom,</p>
<p>Só pra avisar os desavisados que o <a title="Google Chrome Beta para Download" href="http://www.google.com/chrome" target="_blank">Google Chrome Beta está disponível pra download</a>, eu já to testando ele, aliás esse post tá sendo escrito nele, tudo funcionando bem por enquanto.</p>
<p><a href="http://www.google.com/chrome">http://www.google.com/chrome</a></p>
<p>Espero que a informação seja útil para todos <span style="text-decoration: line-through;">os geeks e nerds que não conseguem esperar mais</span>.</p>
<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2008/09/02/google-chrome-beta-disponivel/">Google Chrome Beta disponível!</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/12/04/nova-cara-do-google-reader/" title="Nova cara do Google Reader">Nova cara do Google Reader</a></li><li><a href="http://www.hrangel.com.br/index.php/2008/08/11/erro-no-gmail/" title="Erro no GMail">Erro no GMail</a></li><li><a href="http://www.hrangel.com.br/index.php/2008/01/21/google-reader-com-dragn-drop-nas-pastas/" title="Google Reader com Drag&#8217;n Drop nas pastas">Google Reader com Drag&#8217;n Drop nas pastas</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hrangel.com.br/index.php/2008/09/02/google-chrome-beta-disponivel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erro no GMail</title>
		<link>http://www.hrangel.com.br/index.php/2008/08/11/erro-no-gmail/</link>
		<comments>http://www.hrangel.com.br/index.php/2008/08/11/erro-no-gmail/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 21:12:37 +0000</pubDate>
		<dc:creator>HRangel</dc:creator>
				<category><![CDATA[aplicativos]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[gmail]]></category>

		<guid isPermaLink="false">http://www.hrangel.com.br/?p=111</guid>
		<description><![CDATA[Tela de erro temporário no gMail. Só notei as 18:00. Tem que voltar, Google ta pior que energia, caiu atrapalha tudo. Fonte: Valtinho, colega de trabalho Erro no GMail Artigos relacionadosNova cara do Google ReaderGoogle Chrome Beta disponível!O que é isso señor Steve?Google Reader com Drag&#8217;n Drop nas pastas<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2008/08/11/erro-no-gmail/">Erro no GMail</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Tela de erro temporário no gMail.<br />
Só notei as 18:00.</p>
<p>Tem que voltar, Google ta pior que energia, caiu atrapalha tudo.</p>
<p><a href="http://www.hrangel.com.br/wp-content/uploads/2008/08/gmailerror.jpg"><img class="size-medium wp-image-110" title="Erro no GMail" src="http://www.hrangel.com.br/wp-content/uploads/2008/08/gmailerror-300x175.jpg" alt="Erro no GMail" width="300" height="175" /></a><br />
Fonte: Valtinho, colega de trabalho</p>
<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2008/08/11/erro-no-gmail/">Erro no GMail</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/12/04/nova-cara-do-google-reader/" title="Nova cara do Google Reader">Nova cara do Google Reader</a></li><li><a href="http://www.hrangel.com.br/index.php/2008/09/02/google-chrome-beta-disponivel/" title="Google Chrome Beta disponível!">Google Chrome Beta disponível!</a></li><li><a href="http://www.hrangel.com.br/index.php/2008/04/18/o-que-e-isso-senor-steve/" title="O que é isso señor Steve?">O que é isso señor Steve?</a></li><li><a href="http://www.hrangel.com.br/index.php/2008/01/21/google-reader-com-dragn-drop-nas-pastas/" title="Google Reader com Drag&#8217;n Drop nas pastas">Google Reader com Drag&#8217;n Drop nas pastas</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hrangel.com.br/index.php/2008/08/11/erro-no-gmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog System Open Source &#8211; BRog</title>
		<link>http://www.hrangel.com.br/index.php/2007/05/21/blog-system-open-source-brog/</link>
		<comments>http://www.hrangel.com.br/index.php/2007/05/21/blog-system-open-source-brog/#comments</comments>
		<pubDate>Tue, 22 May 2007 00:54:08 +0000</pubDate>
		<dc:creator>HRangel</dc:creator>
				<category><![CDATA[BRog system]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[novidades]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.hrangel.com.br/index.php/2007/05/21/blog-system-open-source-brog/</guid>
		<description><![CDATA[Continuando o post sobre um projeto Open Source de Blog e trazendo novidades (que estão sendo trazidas em função dos pedidos de alguns dos colegas que frequentam esse blog e pediram), além de promovendo novamente o projeto que logo logo (espero) terá sua própria página. Vamos a elas: O projeto já tem um nome: BRog, [...]<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2007/05/21/blog-system-open-source-brog/">Blog System Open Source &#8211; BRog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Continuando o post sobre <a href="http://www.hrangel.com.br/index.php/2007/04/26/ajuda-para-sistema-open-source-de-blog/" title="BRog - A Idéia">um projeto Open Source de Blog</a> e trazendo novidades (que estão sendo trazidas em função dos pedidos de alguns dos colegas que frequentam esse blog e pediram), além de promovendo novamente o projeto que logo logo (espero) terá sua própria página.</p>
<p>Vamos a elas:</p>
<p>O projeto já tem um nome: <strong>BRog</strong>, idéia de nosso colega <strike>desmemoriado (e sem juízo) <a href="http://memoriasfracas.com/" title="Memorias Fracas - Sem Juizo" target="_blank">Thássius</a></strike> sem juízo <a href="http://above.semjuizo.com/" title="About:blank" target="_blank">Lucas do About:Blank</a> que foi muito bem aceita entre os atuais participantes do projeto.  Também já sabemos que vai ser desenvolvido em C# .NET (antes de me xingarem lembrem que é um projeto de faculdade por isso devo usar a linguagem que tenho mais experiência apesar de a idéia inicial era usar <strike>PHP ou</strike> Java</p>
<p>Além disso já definimos até onde vamos <strike>inicialmente</strike>:</p>
<ul>
<li>Focar principalmente em Engenharia de Software, para facilitar novas versões (melhorias) e para evitar falhas no sistema e melhorar a eficiência do mesmo;</li>
<li>Facilitar o desenvolvimente de plugins, assim como é hoje em dia com o nosso tão querido <a href="http://wordpress.org">WordPress</a>;</li>
<li>Deixar o Sistema o mais simples possível, com isso qualquer usuário <strike>leigo </strike>não experiente poderá usar, alterar (design e sistema) sem alguma dificuldade;</li>
<li>Entre outros itens, claro.</li>
</ul>
<p>Apesar do número baixo de respostas (zero) espero que o post anterior sobre <a href="http://www.hrangel.com.br/index.php/2007/05/16/plugins-traduzidos-a-lista-completa-pre/" title="Lista de Plugins WordPress Traduzidos">plugins traduzidos</a> ainda tenha algumas sugestões para que já criemos os mesmos nativos no BRog System.</p>
<p>Estou como sempre aceitando sugestões para que o projeto saia o mais original e ao mesmo tempo simples possível, como as do <a href="http://above.semjuizo.com/" target="_blank">Luke</a>, <a href="http://memoriasfracas.com/" title="Memorias Fracas - Sem Juizo" target="_blank">Thássius</a> e do <a href="http://leandrow.net/" title="LenadroW" target="_blank">Leandrow</a> (que me ajudou a pensar em coisas novas), entre todos os outros colegas!</p>
<p>Obrigado pela colaboração de todos que passaram por aqui e resolveram dar uma mão, quem estiver interessado em participar do projeto, basta mandar um comentário ou uma mensagem pelo formulário de contato.</p>
<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2007/05/21/blog-system-open-source-brog/">Blog System Open Source &#8211; BRog</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/2007/05/21/blog-system-open-source-brog/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Finalizando a Computação &#8211; Blogger sempre #1</title>
		<link>http://www.hrangel.com.br/index.php/2007/03/31/finalizando-a-computacao-blogger-sempre-1/</link>
		<comments>http://www.hrangel.com.br/index.php/2007/03/31/finalizando-a-computacao-blogger-sempre-1/#comments</comments>
		<pubDate>Sat, 31 Mar 2007 15:37:58 +0000</pubDate>
		<dc:creator>HRangel</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.hrangel.com.br/index.php/2007/03/31/finalizando-a-computacao-blogger-sempre-1/</guid>
		<description><![CDATA[Só uma nota: Podem esperar que até o final do ano deve ter uma primeira versão de um Projeto Open Source .NET (C#) de um Gerenciador de Blogs, nos moldes do WordPress mas nós vamos tentar caprichar na Engenharia de Software para facilitar possíveis mudanças, e para facilitar para os novos bloggers ou para bloggers [...]<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2007/03/31/finalizando-a-computacao-blogger-sempre-1/">Finalizando a Computação &#8211; Blogger sempre #1</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Só uma nota:</p>
<p>Podem esperar que até o final do ano deve ter uma primeira versão de um Projeto Open Source .NET (C#) de um Gerenciador de Blogs, nos moldes do WordPress mas nós vamos tentar caprichar na Engenharia de Software para facilitar possíveis mudanças, e para facilitar para os novos bloggers ou para bloggers que queiram migrar para o sistema novo!</p>
<p>Eu sei que .NET não é uma escolha tão boa para Open-Source mas no momento é o que eu to usando mais por isso vamos usar para não atrapalhar o adanamento no TCC.</p>
<p>Bom até o final do ano vamos ter uma versão .NET em quem sabe alguma coisa Java, se alguém sentir falta de algo em seu Blog agora é a hora de falar pra gte ja projetar no sistema, divulguem a notícia pois queria fazer um sistema adaptado as nossas necessidades e bem projetado.</p>
<p>Vou postando aqui atualizações sobre o assunto!</p>
<p><br/><br/><a href="http://www.hrangel.com.br/index.php/2007/03/31/finalizando-a-computacao-blogger-sempre-1/">Finalizando a Computação &#8211; Blogger sempre #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/2007/03/31/finalizando-a-computacao-blogger-sempre-1/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>

