Люди поможите еще раз? в общем в билдере 6 работаю вот. Вот и надо допустим открыл рисунок в Image . Вот и надо чтоб он из центра закрашивался по пикселям.Причем надо сделать чтобы можно было выбирать цвет закраски. Я почти зделал эту прогу , и она работает как надо но только с черным цветом. А надо чтоб выбрал цвет , и этим цветом закрасилось.
void __fastcall TForm1::open1Click(TObject *Sender)
{
vibor->Execute(); // выбираем файл
Image->Picture->LoadFromFile(vibor->FileName);
Image->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::fillClick(TObject *Sender)
{
ColorDialog->Execute();
d=1;
x=(Image->Width)/2;
y=(Image->Height)/2;
Image1->Canvas->Pixels[x][y]=ColorDialog->Color;
Timer->Enabled=true;
Image1->Canvas->CopyMode=cmSrcAnd; // включаем режим наложения
Image1->Canvas->CopyRect(Rect(0,0,Image1->Width,Image1->Height),Image->Canvas,Rect(0,0,Image->Width,Image->Height));
}
//---------------------------------------------------------------------------
// в Image - рисунок, кот.надо закрасить image1- на нем рисуем по пиксельно
void __fastcall TForm1::TimerTimer(TObject *Sender)
{
for (i=1;i<=d;i++)
{
y++;
if (x==0) Timer->Enabled=false;
Image1->Canvas->Pixels[x][y]=ColorDialog->Color;
}
Image1->Canvas->CopyMode=cmSrcAnd;
Image1->Canvas->CopyRect(Rect(0,0,Image1->Width,Image1->Height),Image->Canvas,Rect(0,0,Image->Width,Image->Height));
for (i=1;i<=d;i++)
{
x++;
Image1->Canvas->Pixels[x][y]=ColorDialog->Color;
}
d++;
for (i=1;i<=d;i++)
{
y--;
Image1->Canvas->Pixels[x][y]=ColorDialog->Color;
}
for (i=1;i<=d;i++)
{
x--;
Image1->Canvas->Pixels[x][y]=ColorDialog->Color;
}
d++;
}
Вот все равно получается фото фильтр
Прикрепленные файлы
lab_3.zip ( 142.07 килобайт )
Кол-во скачиваний: 211
А чего ты сразу не грузишь изображение в Image1->Picture, и в нем напрямую не закрашиваешь пиксели? Зачем этот промежуточный Image?
void __fastcall TForm1::open1Click(TObject *Sender)Что работает не так?
{
if(vibor->Execute()) {
Image1->Picture->LoadFromFile(vibor->FileName);
Image1->Enabled=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::fillClick(TObject *Sender)
{
if(ColorD->Execute()) {
d = 1;
x = (Image1->Width)/2;
y = (Image1->Height)/2;
Image1->Canvas->Pixels[x][y]=ColorD->Color;
Timer->Enabled = true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerTimer(TObject *Sender)
{
for(i = 1; i <= d; i++) {
if(!x) Timer->Enabled = false;
Image1->Canvas->Pixels[x][++y]=ColorD->Color;
}
for(i = 1;i <= d; i++) {
Image1->Canvas->Pixels[++x][y]=ColorD->Color;
}
d++;
for(i = 1;i <= d; i++) {
Image1->Canvas->Pixels[x][--y]=ColorD->Color;
}
for(i = 1;i <= d; i++) {
Image1->Canvas->Pixels[--x][y]=ColorD->Color;
}
d++;
}
или я дибил или просто устал от учебы . странно я с самого начала(когда первый раз писал ее ) пробовал так у меня появлялся белый фон и на нем рисовалось. Вот я тупой
Спасибо за помощь