Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash




Download 0,81 Mb.
bet128/143
Sana20.07.2024
Hajmi0,81 Mb.
#268096
1   ...   124   125   126   127   128   129   130   131   ...   143
Bog'liq
Tiplarni dinamik tarzda-fayllar.org

Rasmlarni o‘zgartirish. Buning uchun fayllarni yuklash openFiledialog va fayllarni saqlash saveFiledialog komponentalaridan foydalanamiz. Buning uchun Brush – mo‘yqalamdan foydalanib, 1 ta komponenta, 3 ta button komponentasini oynaga qulay qilib joylashtiramiz. Button larning birinchisi, rasmni tahrirlashni tozalashni amalga oshiradi, ikkinchisi, tahrirlangan rasmni saqlash uchun, uchinchisi, rasmni tahrirlash uchun yuklashni amalga oshiradi. using namespace System::Drawing::Drawing2D; ni qo‘shishb qo‘yish kerak.


  • qalam. Rasmlarni o‘zgartirish uchun ishlatiladigan o‘zgaruvchilarni eʻlon qilamiz.

    private: Bitmap ^ bmp_for_draw;



    private: Point start_point; private: bool Draw; public: Pen^ pen_for_draw;


    private: String ^ full_name_of_image;




    • qadam. Dastur oynasining Form1_Load hodisasiga dastlabki sozlamalarni



    o‘rnatamiz.

    this->Text = "Rasmni tahrirlash"; button1->Text = "Tozalash"; button2->Text= "Rasmni saqlash"; button3->Text = "Rasmni yuklash";


    pen_for_draw = gcnew Pen(Color::Black, 4);
    pen_for_draw->StartCap = System::Drawing::Drawing2D::LineCap::Round; pen_for_draw->EndCap = System::Drawing::Drawing2D::LineCap::Round;

    Bunda komponentalarni sozlash va bir qalamni yaratib olish, uning StartCap, EndCap xususiyatlarini o‘rnatish amalga oshiriladi.


    • qadam. Komponentdagi rasmni tozalash uchun button1_Click hodisaga algoritmni yozamiz.

    Graphics^ grp = pictureBox1->CreateGraphics(); grp->Clear(SystemColors::Window);






    • qadam. Sichqoncha komponentaning ustida kelganda chizishi uchun



    pictureBox1_MouseDown hodisasiga quyidagi algoritmni kiritamiz

    if (e->Button == System::Windows::Forms::MouseButtons::Left){


    Draw = true;
    start_point = e->Location;
    }






    • qadam. Sichqoncha komponentaning ustida ketganda chizishni to‘xtatish uchun pictureBox1_MouseUp hodisasiga quyidagi algoritmni kiritamiz

    if (e->Button == System::Windows::Forms::MouseButtons::Left){


    Draw = false;
    }




    • qadam. Komponentaga kerakli rasmni yuklash uchun button3_Click



    hodisasiga quyidagi algoritmni yoziladi

    OpenFileDialog ^ open_dialog = gcnew OpenFileDialog();


    open_dialog->Filter = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*";
    if (open_dialog->ShowDialog() == System::Windows::Forms::DialogResult::OK){ try{




    full_name_of_image = open_dialog->FileName; bmp_for_draw = gcnew Bitmap(open_dialog->FileName);


    //pictureBox1->Size = bmp_for_draw->Size;
    pictureBox1->SizeMode = PictureBoxSizeMode::StretchImage; pictureBox1->Image = bmp_for_draw;
    pictureBox1->Invalidate();
    } catch(Exception^ e) {
    System::Windows::Forms::DialogResult rezult = MessageBox::Show("Tanlangan faylni ochib bo'lmaydi "+ e->ToString(),"Diqqat", MessageBoxButtons::OK, MessageBoxIcon::Error);
    }}


    Bundagi asosi nuqson shundan iboratki, agar rasmning o‘lchamlari


    komponentaning o‘lchamlari bilan bir xil bo‘lsa, yaxshi chizadi, bir xil bo‘lmasa, foydalanuvchi ekranining proporsiyasini olib chizadi.



    • qadam. Komponentadagi rasmni saqlash uchun button2_Click hodisasiga quyidagi algoritmni yoziladi

    if (pictureBox1->Image != nullptr){


    String ^format = full_name_of_image->Substring(full_name_of_image->Length - 4, 4); SaveFileDialog ^savedialog = gcnew SaveFileDialog();
    savedialog->Title = "Rasmni saqlash ..."; savedialog->OverwritePrompt = true; savedialog->CheckPathExists = true;
    savedialog->Filter = "Image Files(*.BMP)|*.BMP|Image Files(*.JPG)|*.JPG|Image Files(*.GIF)|*.GIF|Image Files(*.PNG)|*.PNG|All files (*.*)|*.*";
    savedialog->ShowHelp = true;
    // If selected, save
    if (savedialog->ShowDialog() == System::Windows::Forms::DialogResult::OK){ try{
    bmp_for_draw->Save(savedialog->FileName, System::Drawing::Imaging::ImageFormat::Jpeg);
    } catch(Exception ^ e) {
    System::Windows::Forms::MessageBox::Show("Impossible to save image"+e->ToString(), "FATAL ERROR", MessageBoxButtons::OK, MessageBoxIcon::Error);
    } } }




    • qadam. Sichqoncha komponentaning ustida kelganda chizishi uchun



    quyidagi algoritmni kiritamiz.

    if (e->Button == System::Windows::Forms::MouseButtons::Left){ Graphics ^graf = Graphics::FromImage(pictureBox1->Image);


    graf->DrawLine(pen_for_draw, start_point, e->Location); start_point = e->Location;
    pictureBox1->Invalidate();
    }
    Dasturni ishlatganda quyidagi oyna chiqadi.

    12.6-rasm. Rasmlarni tahrirlash.


    Download 0,81 Mb.
1   ...   124   125   126   127   128   129   130   131   ...   143




Download 0,81 Mb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash

Download 0,81 Mb.