- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Làm cách nào để chụp ảnh màn hình bằng C++? Tôi sẽ sử dụng Win32.
Vui lòng không sử dụng mã MFC.
câu trả lời hay nhất
#include "windows.h" // phải nhỏ hơn và lớn hơn thay vì \"
int CaptureBMP(LPCTSTR szFile)
{
// Nguồn[1]
HDC hdcScr, hdcMem;
HBITMAP hbmScr;
BITMAP bmp;
int iXRes, iYRes;
// Tạo DC bình thường và DC bộ nhớ cho toàn bộ màn hình.
// DC bình thường cung cấp "ảnh chụp nhanh" nội dung màn hình.
// bộ nhớ DC giữ một bản sao của "ảnh chụp nhanh" này trong thư mục liên quan
// bitmap.
hdcScr = CreateDC("HIỂN THỊ", NULL, NULL, NULL);
hdcMem = CreateCompatibleDC(hdcScr);
iXRes = GetDeviceCaps(hdcScr, HORZRES);
iYRes = GetDeviceCaps(hdcScr, VERTRES);
// Tạo bitmap tương thích cho hdcScreen.
hbmScr = CreateCompatibleBitmap(hdcScr, iXRes, iYRes);
if (hbmScr == 0) trả về 0;
// Chọn các bitmap vào DC tương thích.
if (!SelectObject(hdcMem, hbmScr)) trả về 0;
// Sao chép dữ liệu màu cho toàn bộ màn hình vào một
// bitmap được chọn vào DC tương thích.
if (!StretchBlt(hdcMem,
0, 0, iXRes, iYRes,
hdcScr,
0, 0, iXRes, iYRes,
SRCCOPY))
return 0;
// Nguồn[2]
PBITMPINFO pbmi;
TỪ cClrBits;
// Truy xuất định dạng màu, chiều rộng và chiều cao của bitmap.
if (!GetObject(hbmScr, sizeof(BITMAP), (LPSTR) &bmp)) trả về 0;
// Chuyển đổi định dạng màu thành số bit.
cClrBits = (WORD)(bmp.bmPlanes * bmp.bmBitsPixel);
nếu (cClrBits == 1)
cClrBits = 1;
nếu không thì (cClrBits <= 4)
cClrBits = 4;
nếu không thì (cClrBits <= 8)
cClrBits = 8;
nếu không thì (cClrBits <= 16)
cClrBits = 16;
nếu không thì (cClrBits <= 24)
cClrBits = 24;
ngược lại cClrBits = 32;
// Cấp phát bộ nhớ cho cấu trúc BITMPINFO (Cấu trúc này.
// chứa cấu trúc BITMAPINFOHEADER và một mảng RGBQUAD
// cấu trúc dữ liệu.)
nếu (cClrBits != 24)
pbmi = (PBITMPINFO) LocalAlloc(LPTR,
sizeof(BITMAPINFOHEADER) +
sizeof(RGBQUAD) * (1 << cClrBits));
// Không có mảng RGBQUAD cho định dạng 24-bit-per-pixel.
khác
pbmi = (PBITMPINFO) LocalAlloc(LPTR,
sizeof(BITMAPINFOHEADER));
// Khởi tạo các trường trong cấu trúc BITMPINFO.
pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
pbmi->bmiHeader.biWidth = bmp.bmWidth;
pbmi->bmiHeader.biHeight = bmp.bmHeight;
pbmi->bmiHeader.biPlanes = bmp.bmPlanes;
pbmi->bmiHeader.biBitCount = bmp.bmBitsPixel;
nếu (cClrBits < 24)
pbmi->bmiHeader.biClrUsed = (1 << cClrBits);
// Nếu bitmap không được nén, hãy đặt cờ BI_RGB.
pbmi->bmiHeader.biCompression = BI_RGB;
// Tính số byte trong mảng màu
// lập chỉ mục và lưu kết quả vào biSizeImage.
pbmi->bmiHeader.biSizeImage = (pbmi->bmiHeader.biWidth + 7) / 8
* pbmi->bmiHeader.biHeight * cClrBits;
// Đặt biClrImportant thành 0, cho biết rằng tất cả
// màu sắc của thiết bị rất quan trọng.
pbmi->bmiHeader.biClrQuan trọng = 0;
XỬ LÝ hf; // xử lý tập tin
BITMAPFILEHEADER hdr; // tiêu đề tệp bitmap
PBITMAPINFOHEADER pbih; // tiêu đề thông tin bitmap
LPBYTE lpBits; // con trỏ bộ nhớ
DWORD dwTotal; // tổng số byte
DWORD cb; // số byte tăng dần
BYTE *hp; // con trỏ byte
DWORD dwTmp;
pbih = (PBITMAPINFOHEADER) pbmi;
lpBits = (LPBYTE) GlobalAlloc(GMEM_FIXED, pbih->biSizeImage);
if (!lpBits) trả về 0;
// Lấy bảng màu (mảng RGBQUAD) và các bit
// (mảng chỉ số bảng màu) từ DIB.
if (!GetDIBits(hdcMem, hbmScr, 0, (WORD) pbih->biHeight, lpBits, pbmi, DIB_RGB_COLORS)) trả về 0;
// Tạo tệp .BMP.
hf = CreateFile(szFile,
GENERIC_READ |
(DWORD) 0,
NULL,
TẠO_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
(XỬ LÝ) NULL);
if (hf == INVALID_HANDLE_VALUE) trả về 0;
hdr.bfType = 0x4d42; // 0x42 = "B" 0x4d = "M"
// Tính kích thước của toàn bộ file.
hdr.bfSize = (DWORD) (sizeof(BITMAPFILEHEADER) +
pbih->biSize + pbih->biClrĐược sử dụng *
sizeof(RGBQUAD) + pbih->biSizeImage);
hdr.bfReserved1 = 0;
hdr.bfReserved2 = 0;
// Tính offset cho mảng chỉ số màu.
hdr.bfOffBits = (DWORD) sizeof(BITMAPFILEHEADER) +
pbih->biSize + pbih->biClrĐược sử dụng *
kích thước (RGBQUAD);
// Copy BITMAPFILEHEADER vào file .BMP.
if (!WriteFile(hf, (LPVOID) &hdr, sizeof(BITMAPFILEHEADER), (LPDWORD) &dwTmp, NULL)) trả về 0;
// Copy mảng BITMAPINFOHEADER và RGBQUAD vào file.
if (!WriteFile(hf, (LPVOID) pbih, sizeof(BITMAPINFOHEADER)
+ pbih->biClrĐược sử dụng * sizeof (RGBQUAD),
(LPDWORD) &dwTmp, NULL))
return 0;
// Copy mảng chỉ số màu vào file .BMP.
dwTotal = cb = pbih->biSizeImage;
hp = lpBits;
if (!WriteFile(hf, (LPSTR) hp, (int) cb, (LPDWORD) &dwTmp, NULL)) return 0;
// Đóng tệp .BMP.
if (! CloseHandle(hf)) trả về 0;
// Bộ nhớ trống.
GlobalFree((HGLOBAL)lpBits);
ReleaseDC(0, hdcScr);
ReleaseDC(0, hdcMem);
return 1;
}
Về ảnh chụp màn hình C++, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/3454682/
Ngoài các điều khiển hiển thị (bài trước “.NET Controls to Pictures” đã giới thiệu việc chuyển đổi từ điều khiển giao diện sang hình ảnh), nguồn sưu tập hình ảnh là nhiều cửa sổ và màn hình hơn. Phương pháp được sử dụng phổ biến nhất để chụp ảnh màn hình cửa sổ là GDI, chỉ cần vào Demo: 1 riêng tư
Tôi đang cố gắng viết chương trình chụp ảnh màn hình bằng phím nóng chung. Sau đây là mã tương ứng: from datetime import datetime import os from pynput import keyboa
Tôi đang xây dựng một ứng dụng sẽ triển khai phản chiếu màn hình cho mọi thiết bị chưa root có Android 4 trở lên, 2 khung hình/giây là đủ. Tôi đang cố chụp ảnh chụp màn hình thiết bị AD bằng lệnh "framebuffer:" của ADB
Làm cách nào để chụp ảnh màn hình bằng C++? Tôi sẽ sử dụng Win32. Vui lòng không sử dụng mã MFC. Câu trả lời hay nhất #include "windows.h" // phải nhỏ hơn và tuyệt vời
Mã như sau: nhập java.awt.Dimension; nhập java.awt.Rectangle; nhập java.awt.Robot;
Tôi hiện đang xây dựng tiện ích mở rộng Google Chrome để chụp nhiều ảnh chụp màn hình từ các trang khác nhau và đăng chúng lên điểm cuối. Vấn đề tôi gặp phải là thời gian không đúng. Ý tôi là còn quá sớm để chụp ảnh màn hình trước khi trang ngừng tải. Thứ hai,
Tôi có Trình điều khiển xem trong đó thanh điều hướng trong suốt. Chế độ xem tiếp theo của tôi là chế độ xem bảng trong đó thanh điều hướng có màu trắng. Để dừng hoạt ảnh không mong muốn, tôi đặt "viewDidDissap" của Chế độ xem bảng
Tôi đang cố gắng tạo ảnh chụp màn hình từ nhiều URL. Mã của tôi hoạt động tốt nhưng kết quả là tôi nhận được hình ảnh của cửa sổ sự kiện. Nhưng tôi cần ảnh chụp màn hình đầy đủ (URL) với top file của trình duyệt = open('links.txt', 'r', en
Tôi đang cố gắng (và triển khai) để chụp ảnh màn hình: robot = new Robot(); BufferedImage biScreen = robot.createScreenCapture(orthScreen)
Có ứng dụng nào có thể quay video/ảnh chụp màn hình của thiết bị Android không. Tôi biết một số phần mềm quay video/hình ảnh màn hình trên máy tính để bàn như camtasia, snagit. Có điều gì tương tự cho các thiết bị Android không? Tôi biết sử dụng
Muốn chụp ảnh một tab có thể ở trạng thái không có sự kiện. Vấn đề là khi sử dụng phương pháp hiển thị ở đây, tab thường không có thời gian để tải trước khi quá trình chụp hoàn tất, khiến tab bị lỗi. Lệnh gọi lại chrome.tabs.update() được thực thi trước khi tab được ghi lại.
Tôi muốn hiển thị ảnh chụp màn hình của mình trong cửa sổ tkinter mới (TopLevel) nhưng tôi không muốn lưu nó trên máy tính của mình. Khi tôi lưu nó, nó hoạt động tốt nhưng khi tôi cố tải ảnh chụp màn hình từ bộ nhớ thì tôi gặp lỗi: Hình ảnh không tồn tại. Cửa sổ chính của tôi là root
Tôi đang cố gắng chụp màn hình mà tôi hiện đang sử dụng nên khi tôi phủ Bộ điều khiển Chế độ xem tiếp theo, tôi có thể biến nó thành ImageView phía sau nó và làm cho nó xuất hiện nửa trong suốt. Điều này hoạt động, nhưng bây giờ nó tạo ra một
Tôi đang tìm cách chuyển đổi trang đầu tiên của tài liệu docx (và sau này là excel và powerpoint) thành hình ảnh. Tôi không muốn phân tích thủ công toàn bộ xml của tài liệu vì việc đó có vẻ tốn rất nhiều công sức;) Vì vậy, tôi đoán tôi chỉ muốn thu thập một số ý tưởng về cách
Thật tình cờ là tôi đang viết chương trình để chụp một số ảnh chụp màn hình và tôi gặp một số khó khăn với một tệp đã được một quy trình khác sử dụng, hy vọng ai đó có thể giúp tôi tìm cách "đóng" quy trình này hoặc làm sáng tỏ me Cách tiến hành. //Tạo một b mới
Tôi sắp xuất bản ứng dụng của mình trên App Store và tôi muốn chụp ảnh màn hình ứng dụng của mình mà không có tất cả thông tin trên thanh trạng thái như nhà cung cấp dịch vụ và chế độ Gỡ lỗi, v.v. Tôi biết Marshmallow có Giao diện người dùng hệ thống
UIGraphicsBeginImageContext(self.reportList.frame.size); CGRect tableViewFrame = self.reportList.fra
Có cách nào gọn gàng để truy cập ảnh chụp màn hình của thiết bị Android theo chương trình không. Tôi đang tìm kiếm khoảng 15-20 khung hình/giây. Tôi đã tìm thấy một mã android\generic\frameworks\base\service
Được rồi, tôi đang cố chạy nhiều ảnh chụp màn hình cho nhiều trang web! Tôi có một ảnh chụp màn hình cho nhiều trang web, tôi cũng có thể lấy nhiều ảnh chụp màn hình Viewport cho một trang web, nhưng tôi có 34 trang web mà tôi cần phải làm điều này! có ai biết cách sử dụng casperjs không
Tôi đang tạo gói hình dán cho iOS và trước khi gửi gói đó lên App Store, tôi cần gửi kèm ít nhất một ảnh chụp màn hình của ứng dụng từ iPhone 5,5 inch và iPad Pro 12,9 inch. Đây đều là những thiết bị tôi không có.
Tôi là một lập trình viên xuất sắc, rất giỏi!