Usuário com melhor resposta
[Graphics] Recuperando desenho

Pergunta
-
Olá, pessoal! Estou criando um aplicação de desenho e quero implementar a mudança da cor de fundo, mas sem que
o desenho já feito seja perdido.
Por exemplo, ao clicar no botão e mudar a cor do fundo, queria que o desenho já feito continuasse na tela. É possível?
Respostas
-
Bom dia,
Por gentileza, verifique se esse exemplo o ajuda:
Image image = Image.FromFile("minhaImagem.png"); Bitmap bmp = new Bitmap(image.Width, image.Height); using (Graphics g = Graphics.FromImage(bmp)) { g.Clear(Color.SkyBlue); g.InterpolationMode = InterpolationMode.NearestNeighbor; g.PixelOffsetMode = PixelOffsetMode.None; g.DrawImage(image, Point.Empty); }
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Robson William SilvaModerator segunda-feira, 27 de março de 2017 12:13
Todas as Respostas
-
Bom dia,
O que você já desenvolveu até o momento?
Em qual parte do código exatamente está a sua dúvida?
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
aí vai o código do form que tem a tela de desenho
using System;
using System.Drawing;
using System.Windows.Forms;
namespace TelaDeDesenho
{
public partial class Form1 : Form
{
// Determina quando pode pintar na tela
bool pinta = false;
// Parâmetros padrão
int espessuraPadrao = 4;
Color cor = Color.Blue;
int espessura;
Graphics graf;
public Form1()
{
InitializeComponent();
// Setando espessura padrão
espessura = espessuraPadrao;
textBoxEspessura.Text = espessura.ToString();
radioButtonCaneta.Checked = true;
// Cor padrãos da caneta
buttonCorCaneta.BackColor = cor;
// Criando o controle graf, responsável pelo desenho
// sobre o painel
graf = painelDeDesenho.CreateGraphics();
}
// Quando está pressionado, deve pintar
private void painelDeDesenho_MouseDown(object sender, MouseEventArgs e)
{
// habilita a pintura
pinta = true;
// atualiza a espessura
espessura = RetornaEspessura();
textBoxEspessura.Text = espessura.ToString();
}
// Quando é liberado, deve parar de pintar
private void painelDeDesenho_MouseUp(object sender, MouseEventArgs e)
{
pinta = false;
}
// Enquanto o ponteiro se move na tela e o botão está pressionado,
// pinta na tela
private void painelDeDesenho_MouseMove(object sender, MouseEventArgs e)
{
if(pinta)
{
// Habilita a borracha com a cor do fundo do form
graf.FillEllipse(new SolidBrush(this.BackColor), e.X, e.Y, espessura, espessura);
// Desenhando através de pequenos círculos
if (radioButtonCaneta.Checked)
graf.FillEllipse(new SolidBrush(this.cor), e.X, e.Y, espessura, espessura);
}
}
private int RetornaEspessura()
{
// Tenta converter, se não conseguir lança a exceção e retorna o default
try
{
this.espessura = Convert.ToInt32(textBoxEspessura.Text);
if (espessura < 0)
{
espessura = espessura * -1;
}
return espessura;
}
catch (System.FormatException)
{
MessageBox.Show("Valor de espessura inválido!");
textBoxEspessura.Text = espessuraPadrao.ToString();
return espessuraPadrao;
}
}
private void buttonLimpaTela_Click(object sender, EventArgs e)
{
graf.Clear(painelDeDesenho.BackColor);
}
private void buttonCorCaneta_Click(object sender, EventArgs e)
{
ColorDialog caixaDeCores = new ColorDialog();
caixaDeCores.ShowDialog();
buttonCorCaneta.BackColor = caixaDeCores.Color;
this.cor = caixaDeCores.Color;
}
private void buttonCorFundo_Click(object sender, EventArgs e)
{
ColorDialog caixaDeCores = new ColorDialog();
caixaDeCores.ShowDialog();
// Mudar cor de fundo sem alterar o desenho
// E agora, José?
}
}
} -
Bom dia,
Por gentileza, verifique se esse exemplo o ajuda:
Image image = Image.FromFile("minhaImagem.png"); Bitmap bmp = new Bitmap(image.Width, image.Height); using (Graphics g = Graphics.FromImage(bmp)) { g.Clear(Color.SkyBlue); g.InterpolationMode = InterpolationMode.NearestNeighbor; g.PixelOffsetMode = PixelOffsetMode.None; g.DrawImage(image, Point.Empty); }
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Robson William SilvaModerator segunda-feira, 27 de março de 2017 12:13
-
-
Bom dia,
Conseguiu resolver esse problema?
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Bom dia,
Devido a falta de interação do autor dessa pergunta,
essa thread está sendo fechada. Caso o problema ainda
esteja ocorrendo, favor abrir uma nova thread.
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.