参考以下代码,可以实现截图:import window from '@ohos.window'; import { BusinessError } from '@kit.BasicServicesKit'; import { image } from '@kit.ImageKit'; import { photoAccessHelper } from '@kit.MediaLibraryKit'; import fs from '@ohos.file.fs'; import { promptAction } from '@kit.ArkUI'; @Entry @Component struct Index { @State message: string = 'Hello World'; build() { RelativeContainer() { Text(this.message) .id('HelloWorld') .fontSize(50) .fontWeight(FontWeight.Bold) .alignRules({ center: { anchor: '__container__', align: VerticalAlign.Center }, middle: { anchor: '__container__', align: HorizontalAlign.Center } }) SaveButton({ icon: SaveIconStyle.FULL_FILLED, text: SaveDescription.SAVE_IMAGE, buttonType: ButtonType.Capsule }) .onClick(async (event, result) => { // Get pixelMap window.getLastWindow(getContext(this), (err: BusinessError, data) => { const errCode: number = err.code; if (errCode) { return; } let windowClass = data; windowClass.snapshot(async (err: BusinessError, pixelMap: image.PixelMap) => { const errCode: number = err.code; if (errCode) { return; } console.info('Succeeded in snapshotting window. Pixel bytes number: ' + pixelMap.getPixelBytesNumber()); let scaleX: number = 0.5; let scaleY: number = 0.5; // Save Pic if (result === SaveButtonOnClickResult.SUCCESS) { const helper = photoAccessHelper.getPhotoAccessHelper(getContext(this)); try { const uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'png'); const file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); const imagePackerApi: image.ImagePacker = image.createImagePacker(); const packOpts: image.PackingOption = { format: 'image/png', quality: 100, }; imagePackerApi.packToFile(pixelMap, file.fd, packOpts).then(() => { promptAction.showToast({ message: 'Succeeded save', duration: 1500 }) }).catch((error: BusinessError) => { console.error(`Failed to packToFile. Error code is ${error.code}, message is ${error.message}`); }); } catch (error) { const err: BusinessError = error as BusinessError; console.error(`Failed to save photo. Error code is ${err.code}, message is ${err.message}`); } } else { promptAction.showToast({ message: 'No permission.', duration: 1500 }) } }); }); }) } .height('100%') .width('100%') } }
参考以下代码,可以实现截图: