Sejam bem vindos ao nosso forum, onde havera hacks, utilitários tutoriais e dicas para diversos jogos, fique conosco e desfrute do melhor.

Criando um Paint Pelo Delphi

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Criando um Paint Pelo Delphi

Mensagem por bielzinx em Qui Maio 19, 2011 6:40 pm

Requisitos:
*Um Computador
*Um Teclado
*Saber matematica geometrica ( ignorem eu não sei muito e consegui xD)
*Delphi
*Conhecimento médio em delphi
*Sources do trabalho [url="http://www.dicasdelphi.com.br/wp-content/uploads/2009/05/paint.rar"]Download aqui[/url]

Após conseguir todos os requisitos vamos começar:

Segue um exemplo de um programa inspirado no Paint do Windows .Nós vamos usar dois componentes Image da paleta Additional para representar a nossa área de desenho. Esse componente assim como todos os componentes visuais do Delphi tem uma propriedade chamada “Canvas” ,é essa propriedade que vai determinar a aparência dos componentes visuais como um Edit, Label, Image etc… Dentre as propriedades da Classe TCanvas umas das principais são: Brush, CanvasOrientation, ClipRect, CopyMOde, Font, Handle, Pen, PenPos, Pixels, Ellipse, FillRect, LineTo, MoveTo, Rectangle e uma porção de outras propriedades.

Vamos declarar duas variáveis globais do tipo TBitmap com os nomes Backbuffer e backbuffer2, essas variáveis vão gerar a nossa área de desenho (é claro que é preciso declarar outras variáveis globais para esse exemplo rodar direito,qualquer dúvida é só dar uma olhada no código fonte ) . Eu coloquei os dois Images dentro de um ScrollBox (paleta Additional) para poder redimensionar os Images sem interferir no tamanho do Form. Agora que começa a parte boa, hora de por a mão na maça, dentro do OnCreate do Form faça o seguinte.



Para podermos usar os Backbuffers temos que criar com backbuffer:= TBitmap.Create; dimensionamos ele no mesmo tamanho do Scrollbox . Obackbuffer.Canvas.Brush.Color:= ClWhite; é para determinar a cor de preenchimento do backbuffer. Na parteImage1.Canvas.FillRect(Rect(0,0,Image1.width, Image1.height)); vamos Limpar toda a área do Image e finalmente mandamos o backbuffer para o Image com : Image1.Picture.Assign(backbuffer);

Vamos repetir o mesmo procedimento para o backbuffer2 com algumas coisas adicionais.Aqui nós determinamos qual vai ser a cor transparente do backbuffer2 que vai pro Image2, e em muitas vezes o Image2 vai ficar sobre o Image1 como pode ver no evento de alguns botões das ferramentas com o comando Image2.BringToFront;. Assim quando o Image2 ficar sobre o Image1 vai ser possível ver o Image1 que está por baixo. Aqui no caso eu usei a cor branca.
Inicialize as outras variáveis como no exemplo do código fonte.






cor:= clBlack;
ferramenta:= ‘lápis’;
StatusBar1.Panels[1].Text:= ‘Lapis’;
Shape1.Brush.Color:= cor;

E por último vamos liberar as variáveis backbuffer e backbuffer2 da memória, por enquanto não precisamos mais delas ,pois já foram carregadas para os dois Images, portanto vamos trabalhar com eles.
As ferramentas que vão utilizar o Image2 são aquelas que desenham as linhas, retângulos e elipses. Dentro do Image2 vamos utilizar três eventos , o OnMouseDown, OnMouseMove e OnMouseUp. O componente Image é como um plano cartesiano, se você não matou as suas aulas de matemáticasabe do que eu estou falando hehehe, ele tem duas dimensões , o X e o Y.



No OnMouseDown nós vamos pegar a posição X e Y que o usuário clicou dentro do Image2. Dai fazemos o seguinte, Image2.Canvas.MoveTo(X,Y); , com isso nós movemos a posição do ponto de partida de uma linha por exemplo ,não começamos a desenhar ainda só dizemos a propriedade Canvas do Image onde vai começar a linha.



No OnMouseMove nós usamos as variáveis X e Y do OnMouseDown e criamos uma linha (se o usuário selecionou essa ferramenta)dessa posição até a posição atual no OnMouseMove.
Image2.Canvas.MoveTo(posX2,posY2);
Note que antes de usar esse comando eu usei o Image2.Canvas.FillRect(Rect(0,0,Image2.Width,Image2.Height)); Para limpar o que já tinha sido desenhado antes, se não fizermos isso o Image2 vai desenhando um monte de linha uma atrás da outra, e fica um monte de linha desenhada no Image. Por isso eu usei dois Images , um para guardar o desenho e o outro para mostrar só o traçado da linha , se eu tivesse usado oCanvas.FillRect(); no Image1 a cada evento do OnMouseMove seria apagado todo o desenho principal.



No OnMouseUp quando o usuário solta o botão do mouse , o programa já tem a posição inicial e final da linha e faz o desenho no Image1 que é o desenho principal.



if ferramenta = ‘linha’ then
begin
Image1.Canvas.MoveTo(posX2,posY2);
Image1.Canvas.LineTo(posX,posY);
posX3:= x;
posY3:= y;
end;


Algumas ferramentas não utilizam o Image2 pois desenha direto no Image1 que são a ferramenta Lápis, Borracha, Spray e os baldes de tinta. No caso dos baldes de tinta eu não consegui achar nenhum comando que conseguisse fazer igual ao do Paint do Windows.

Bom é isso aí pessoal , eu passei o básico de algumas funcionalidades do programa dentro da propriedade Canvas do componente Image, o programa tem outras funções bem legais como abrir imagens e poder editar, salvar e também redimensionar o tamanho da área de desenho.

Flw galera, Obrigado pela atenção.

bielzinx
Membro
Membro

Mensagens : 79
Agradecimentos : 8
Data de inscrição : 14/05/2011
20 / 10020 / 100



Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um Paint Pelo Delphi

Mensagem por Vidaama em Sab Maio 21, 2011 12:30 pm

esse método eu já conhecia]
e é funcional
parabéns pelo desempenho
se estudarem os próprios usuários podem criar ferramentas

Vidaama
Bronze Member
Bronze Member

Mensagens : 152
Agradecimentos : 11
Data de inscrição : 13/02/2011
Idade : 19
15 / 10015 / 100



Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um Paint Pelo Delphi

Mensagem por hotyuri em Dom Maio 29, 2011 1:02 am

Meus Parabens Pelo Topico 100% Funcional N Tam Dificil Vlw Por Compartilhar. Levou Meus Tranks

Prints 100%
Cores 3%
Explicado 100%
Tutorial 100%
trancks 100%
Nota total 79,8


Nao Ganhou 100 Por Falta De Cores.




Ou


hotyuri
Membro
Membro

Mensagens : 11
Agradecimentos : 0
Data de inscrição : 28/05/2011
Idade : 21
Localização : Cheats HoT
Humor : :D :S Kero Ser Disigner
0 / 1000 / 100



Ver perfil do usuário http://www.global-cheats.tk

Voltar ao Topo Ir em baixo

Re: Criando um Paint Pelo Delphi

Mensagem por .:JR:. em Sex Mar 30, 2012 10:09 pm

Nossa eu me cadastrei aqui só por causa do tutorial e depois descobri que é uma cópia do original em: [Você precisa estar registrado e conectado para ver este link.]
Não sou contra copiar tutoriais de outros lugares, mas poderia ter posto a fonte. Abraços!
POdem deletar a minha conta...FUI

.:JR:.
Membro
Membro

Mensagens : 8
Agradecimentos : 0
Data de inscrição : 30/03/2012
0 / 1000 / 100



Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um Paint Pelo Delphi

Mensagem por Conteúdo patrocinado Hoje à(s) 11:45 pm


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum