• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

cách xoay hình 90 độ

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Điều hành viên: tungblt, vuathongtin

thuantq
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Hai 14/03/2016 10:22 pm
Has thanked: 5 time

cách xoay hình 90 độ

Gửi bàigửi bởi thuantq » T.Tư 16/03/2016 8:30 pm

Dear Anh/chị ,

Em đang làm đồ án về paint mà ko biết viết code như thế nào để kết hợp việc kéo phóng to thu nhỏ hình hoặc mình có thể xoay 90 như trong Ms.Paint.

Anh/Chị nào có code đoạn đó cho em xin nha . Em đang viết bằng VB nói chung chạy ok hết rồi chỉ còn thêm cái vụ xoay hình 90 độ theo đồ án



khoaph
Thành viên chính thức
Thành viên chính thức
Bài viết: 34
Ngày tham gia: T.Ba 08/12/2015 12:57 pm
Been thanked: 4 time

Re: cách xoay hình 90 độ

Gửi bàigửi bởi khoaph » T.Sáu 18/03/2016 8:41 pm

bạn muốn xoay hình bằng vb net à, phóng to thu nhỏ được mà không xoay được sao, dữ liệu ảnh bạn lưu như thế nào
hãy tìm hiểu lớp Bitmap
  1. Public Function XoayAnh90Do(ByVal Anh As Bitmap, ByVal TheoChieuDongHo As Boolean) As Bitmap
  2.         Dim AnhMoi As Bitmap = New Bitmap(Anh.Height, Anh.Width)
  3.         If TheoChieuDongHo Then
  4.             For i As Integer = 0 To Anh.Height - 1
  5.                 For j As Integer = 0 To Anh.Width - 1
  6.                     AnhMoi.SetPixel(Anh.Width - 1 - i, j, Anh.GetPixel(i, j))
  7.                 Next
  8.             Next
  9.         Else
  10.             For i As Integer = 0 To Anh.Height - 1
  11.                 For j As Integer = 0 To Anh.Width - 1
  12.                     AnhMoi.SetPixel(i, Anh.Width - 1 - j, Anh.GetPixel(i, j))
  13.                 Next
  14.             Next
  15.         End If
  16.         Return AnhMoi
  17.     End Function

Hình đại diện của người dùng
duongk10b
Thành viên danh dự
Thành viên danh dự
Bài viết: 313
Ngày tham gia: T.Hai 28/05/2012 5:17 pm
Đến từ: Cty TNHH Minh Lộ
Been thanked: 50 time
Liên hệ:

Re: cách xoay hình 90 độ

Gửi bàigửi bởi duongk10b » T.Bảy 19/03/2016 8:40 am

Bạn thử dùng cách này xem :-?
  1. Dim bm As New Bitmap
  2. bm.RotateFlip(RotateFlipType.Rotate90FlipXY)
Phận làm trai gõ phím bình thiên hạ.
Thân anh hùng click chuột định giang sơn

thuantq
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Hai 14/03/2016 10:22 pm
Has thanked: 5 time

Re: cách xoay hình 90 độ

Gửi bàigửi bởi thuantq » T.Bảy 19/03/2016 8:57 pm

Cám ơn Bạn khoaph và duongk10b. Mình sẽ thử xem như thế nào

thuantq
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Hai 14/03/2016 10:22 pm
Has thanked: 5 time

Re: cách xoay hình 90 độ

Gửi bàigửi bởi thuantq » T.Ba 12/04/2016 9:40 pm

Anh em giúp em với hiện tại em đã gõ code như vậy rồi vẫn ko chạy được.

Tình hình là em muốn nhấp chuột phải vô cái hình em mới vẽ rồi sau đó em chọn xoay90 độ thì phải viết code như thế nào mong thỉnh giáo anh em.

bietchetlien
Thành viên chính thức
Thành viên chính thức
Bài viết: 35
Ngày tham gia: T.Hai 05/01/2015 2:09 pm
Has thanked: 1 time
Been thanked: 4 time

Re: cách xoay hình 90 độ

Gửi bàigửi bởi bietchetlien » T.Tư 13/04/2016 4:11 pm


thuantq
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Hai 14/03/2016 10:22 pm
Has thanked: 5 time

Re: cách xoay hình 90 độ

Gửi bàigửi bởi thuantq » T.Năm 14/04/2016 3:44 pm

Bác Biết Chết liền ơi cái của em ông thầy yêu cầu viết theo hướng lối tượng bao gồm 1 lớp chính, lớp hình chữ nhật, lớp hình tròn, tam giác, đường thẳng ak. hic hic

thuantq
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Hai 14/03/2016 10:22 pm
Has thanked: 5 time

Re: cách xoay hình 90 độ

Gửi bàigửi bởi thuantq » T.Năm 14/04/2016 3:53 pm

Hiện tại code em như vậy thì em thêm như thế nào để kết hợp cho cả việc xoay 90 độ bà con cô bác xem giúp em nha. Em xin cảm ơn nhiều nhiều:

    Protected Sub ThayDoiKichThuoc(viTriDiemDieuKhien As Integer, newPoint As Point) [color=#80FF00]' Thay đổi kích thước đối tượng khi biết 1 điểm điều khiển và điểm đến[/color]
    Dim deltaX As Integer = newPoint.X - diemMouseDown.X
    Dim deltaY As Integer = newPoint.Y - diemMouseDown.Y
    diemMouseDown = newPoint
    If viTriDiemDieuKhien = 2 OrElse viTriDiemDieuKhien = 7 Then
    diemKetThuc.Y += deltaY '2 cạnh nằm ngang tịnh tiến lên xuống
    ElseIf viTriDiemDieuKhien = 4 OrElse viTriDiemDieuKhien = 5 Then
    diemKetThuc.X += deltaX '2 cạnh đứng tịnh tiến trái phải
    Else
    diemKetThuc = newPoint 'các góc di chuyển theo chuột
    End If

    End Sub


thuantq
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: T.Hai 14/03/2016 10:22 pm
Has thanked: 5 time

Re: cách xoay hình 90 độ

Gửi bàigửi bởi thuantq » T.Năm 14/04/2016 3:57 pm

Em xin up thêm sự kiện Mouse down như sau:

    Public Overrides Sub Mouse_Down(e As MouseEventArgs) ' Sự kiện chuột
    viTriChuotSoVoiHinhVe = KiemTraViTri(e.Location)
    If viTriChuotSoVoiHinhVe > 0 Then 'đánh dấu bắt đầu thay đổi kích thước
    _ThayDoiKichThuoc = True
    ThayDoiDiem(viTriChuotSoVoiHinhVe)

    diemMouseDown = e.Location
    ElseIf viTriChuotSoVoiHinhVe = 0 Then
    _diChuyen = True 'đánh dấu băt đầu di chuyển

    diemMouseDown = e.Location
    Else
    diemBatDau = e.Location 'vẽ hình mới
    diemKetThuc.X = e.X
    diemKetThuc.Y = e.Y - 1
    End If
    End Sub

Và giờ em phải làm thế nào cho cái sự kiện click 90 độ này:

    Private Sub Xoay90ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles Xoay90ToolStripMenuItem.Click

    End Sub

khoaph
Thành viên chính thức
Thành viên chính thức
Bài viết: 34
Ngày tham gia: T.Ba 08/12/2015 12:57 pm
Been thanked: 4 time

Re: cách xoay hình 90 độ

Gửi bàigửi bởi khoaph » T.Ba 19/04/2016 1:23 pm

Code trên là dành cho quay ảnh Bitmap
Cho bạn cái code quay 1 điểm 90 độ quanh một điểm cho trước

Mã: Chọn hết

Public Function QuayDiem90Do(ByVal tsDiem As Point, ByVal tsTamQuay As Point, ByVal tsTheoDongHo As Boolean) As Point
        tsDiem = New Point(tsDiem.X - tsTamQuay.X, tsDiem.Y - tsTamQuay.Y)
        Dim bDiemMoi As Point = Point.Empty
        If tsTheoDongHo Then
            bDiemMoi.X = tsDiem.Y
            bDiemMoi.Y = -tsDiem.X
        Else
            bDiemMoi.X = -tsDiem.Y
            bDiemMoi.Y = tsDiem.X
        End If
        bDiemMoi.X += tsTamQuay.X
        bDiemMoi.Y += tsTamQuay.Y
        Return bDiemMoi
    End Function

trường hợp của bạn là để quay ảnh ta phải quay từng điểm cấu tạo nên đối tượng ảnh đó(chẳng hạn để quay đường thẳng thì ta quay điểm đầu và điểm cuối), còn tâm quay thì bạn phải tự xác định tùy theo đối tượng ảnh


Quay về “Visual Basic .NET và C# (VB.NET & C#)”

Đang trực tuyến

Đang xem chuyên mục này: Bing [Bot]4 khách