diff --git a/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-frameNode.md b/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-frameNode.md
index f9156cedb2b8607b7c466d46ae3dc451fb781de8..dd1c63efe476d2745b96ed1822b393abeb4f15a3 100644
--- a/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-frameNode.md
+++ b/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-frameNode.md
@@ -520,6 +520,67 @@ getPositionToWindow(): Position
**示例:**
+```ts
+import { NodeController, FrameNode, UIContext } from '@kit.ArkUI';
+
+const TEST_TAG: string = "FrameNode ";
+
+class MyNodeController extends NodeController {
+ public frameNode: FrameNode | null = null;
+ private rootNode: FrameNode | null = null;
+
+ makeNode(uiContext: UIContext): FrameNode | null {
+ this.rootNode = new FrameNode(uiContext);
+ this.frameNode = new FrameNode(uiContext);
+ this.frameNode.commonAttribute.backgroundColor(Color.Pink);
+ this.frameNode.commonAttribute.size({ width: 100, height: 100 });
+ this.rootNode.appendChild(this.frameNode);
+ return this.rootNode;
+ }
+
+ getPositionToWindow() {
+ let positionToWindow = this.rootNode?.getPositionToWindow();
+ console.info(TEST_TAG + JSON.stringify(positionToWindow));
+ }
+}
+
+@Entry
+@Component
+struct Index {
+ private myNodeController: MyNodeController = new MyNodeController();
+ private scroller: Scroller = new Scroller();
+ @State index: number = 0;
+
+ build() {
+ Scroll(this.scroller) {
+ Column({ space: 8 }) {
+ Column() {
+ Text("This is a NodeContainer.")
+ .textAlign(TextAlign.Center)
+ .borderRadius(10)
+ .backgroundColor(0xFFFFFF)
+ .width('100%')
+ .fontSize(16)
+ NodeContainer(this.myNodeController)
+ .borderWidth(1)
+ .width(300)
+ .height(100)
+ }
+
+ Button("getPositionToWindow")
+ .width(300)
+ .onClick(() => {
+ this.myNodeController.getPositionToWindow();
+ })
+ }
+ .width("100%")
+ }
+ .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
+ }
+}
+
+```
+
请参考[节点操作示例](#节点操作示例)。
@@ -541,6 +602,68 @@ getPositionToParent(): Position
**示例:**
+```ts
+import { NodeController, FrameNode, UIContext } from '@kit.ArkUI';
+
+const TEST_TAG: string = "FrameNode ";
+
+class MyNodeController extends NodeController {
+ public frameNode: FrameNode | null = null;
+ private rootNode: FrameNode | null = null;
+
+ makeNode(uiContext: UIContext): FrameNode | null {
+ this.rootNode = new FrameNode(uiContext);
+
+ this.frameNode = new FrameNode(uiContext);
+ this.frameNode.commonAttribute.backgroundColor(Color.Pink);
+ this.frameNode.commonAttribute.size({ width: 100, height: 100 });
+ this.rootNode.appendChild(this.frameNode);
+ return this.rootNode;
+ }
+
+ getPositionToParent() {
+ let positionToParent = this.rootNode?.getPositionToParent();
+ console.info(TEST_TAG + JSON.stringify(positionToParent));
+ }
+}
+
+@Entry
+@Component
+struct Index {
+ private myNodeController: MyNodeController = new MyNodeController();
+ private scroller: Scroller = new Scroller();
+ @State index: number = 0;
+
+ build() {
+ Scroll(this.scroller) {
+ Column({ space: 8 }) {
+ Column() {
+ Text("This is a NodeContainer.")
+ .textAlign(TextAlign.Center)
+ .borderRadius(10)
+ .backgroundColor(0xFFFFFF)
+ .width('100%')
+ .fontSize(16)
+ NodeContainer(this.myNodeController)
+ .borderWidth(1)
+ .width(300)
+ .height(100)
+ }
+
+ Button("getPositionToParent")
+ .width(300)
+ .onClick(() => {
+ this.myNodeController.getPositionToParent();
+ })
+ }
+ .width("100%")
+ }
+ .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
+ }
+}
+
+```
+
请参考[节点操作示例](#节点操作示例)。
### getPositionToScreen12+
@@ -561,6 +684,68 @@ getPositionToScreen(): Position
**示例:**
+```ts
+import { NodeController, FrameNode, UIContext } from '@kit.ArkUI';
+
+const TEST_TAG: string = "FrameNode ";
+
+class MyNodeController extends NodeController {
+ public frameNode: FrameNode | null = null;
+ private rootNode: FrameNode | null = null;
+
+ makeNode(uiContext: UIContext): FrameNode | null {
+ this.rootNode = new FrameNode(uiContext);
+
+ this.frameNode = new FrameNode(uiContext);
+ this.frameNode.commonAttribute.backgroundColor(Color.Pink);
+ this.frameNode.commonAttribute.size({ width: 100, height: 100 });
+ this.rootNode.appendChild(this.frameNode);
+ return this.rootNode;
+ }
+
+ getPositionToScreen() {
+ let positionToScreen = this.rootNode?.getPositionToScreen();
+ console.info(TEST_TAG + JSON.stringify(positionToScreen));
+ }
+}
+
+@Entry
+@Component
+struct Index {
+ private myNodeController: MyNodeController = new MyNodeController();
+ private scroller: Scroller = new Scroller();
+ @State index: number = 0;
+
+ build() {
+ Scroll(this.scroller) {
+ Column({ space: 8 }) {
+ Column() {
+ Text("This is a NodeContainer.")
+ .textAlign(TextAlign.Center)
+ .borderRadius(10)
+ .backgroundColor(0xFFFFFF)
+ .width('100%')
+ .fontSize(16)
+ NodeContainer(this.myNodeController)
+ .borderWidth(1)
+ .width(300)
+ .height(100)
+ }
+
+ Button("getPositionToScreen")
+ .width(300)
+ .onClick(() => {
+ this.myNodeController.getPositionToScreen();
+ })
+ }
+ .width("100%")
+ }
+ .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
+ }
+}
+
+```
+
请参考[节点操作示例](#节点操作示例)。
@@ -582,6 +767,67 @@ getPositionToParentWithTransform(): Position
**示例:**
+```ts
+import { NodeController, FrameNode, UIContext } from '@kit.ArkUI';
+
+const TEST_TAG: string = "FrameNode ";
+
+class MyNodeController extends NodeController {
+ public frameNode: FrameNode | null = null;
+ private rootNode: FrameNode | null = null;
+
+ makeNode(uiContext: UIContext): FrameNode | null {
+ this.rootNode = new FrameNode(uiContext);
+
+ this.frameNode = new FrameNode(uiContext);
+ this.frameNode.commonAttribute.backgroundColor(Color.Pink);
+ this.frameNode.commonAttribute.size({ width: 100, height: 100 });
+ this.rootNode.appendChild(this.frameNode);
+ return this.rootNode;
+ }
+
+ getPositionToParentWithTransform() {
+ let positionToParentWithTransform = this.rootNode?.getPositionToParentWithTransform();
+ console.info(TEST_TAG + JSON.stringify(positionToParentWithTransform));
+ }
+}
+
+@Entry
+@Component
+struct Index {
+ private myNodeController: MyNodeController = new MyNodeController();
+ private scroller: Scroller = new Scroller();
+ @State index: number = 0;
+
+ build() {
+ Scroll(this.scroller) {
+ Column({ space: 8 }) {
+ Column() {
+ Text("This is a NodeContainer.")
+ .textAlign(TextAlign.Center)
+ .borderRadius(10)
+ .backgroundColor(0xFFFFFF)
+ .width('100%')
+ .fontSize(16)
+ NodeContainer(this.myNodeController)
+ .borderWidth(1)
+ .width(300)
+ .height(100)
+ }
+
+ Button("getPositionToParentWithTransform")
+ .width(300)
+ .onClick(() => {
+ this.myNodeController.getPositionToParentWithTransform();
+ })
+ }
+ .width("100%")
+ }
+ .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
+ }
+}
+```
+
请参考[节点操作示例](#节点操作示例)。
### getPositionToWindowWithTransform12+
@@ -602,6 +848,66 @@ getPositionToWindowWithTransform(): Position
**示例:**
+```ts
+import { NodeController, FrameNode, UIContext } from '@kit.ArkUI';
+
+const TEST_TAG: string = "FrameNode ";
+
+class MyNodeController extends NodeController {
+ public frameNode: FrameNode | null = null;
+ private rootNode: FrameNode | null = null;
+
+ makeNode(uiContext: UIContext): FrameNode | null {
+ this.rootNode = new FrameNode(uiContext);
+
+ this.frameNode = new FrameNode(uiContext);
+ this.frameNode.commonAttribute.backgroundColor(Color.Pink);
+ this.frameNode.commonAttribute.size({ width: 100, height: 100 });
+ this.rootNode.appendChild(this.frameNode);
+ return this.rootNode;
+ }
+
+ getPositionToWindowWithTransform() {
+ let positionToWindowWithTransform = this.rootNode?.getPositionToWindowWithTransform();
+ console.info(TEST_TAG + JSON.stringify(positionToWindowWithTransform));
+ }
+}
+
+@Entry
+@Component
+struct Index {
+ private myNodeController: MyNodeController = new MyNodeController();
+ private scroller: Scroller = new Scroller();
+ @State index: number = 0;
+
+ build() {
+ Scroll(this.scroller) {
+ Column({ space: 8 }) {
+ Column() {
+ Text("This is a NodeContainer.")
+ .textAlign(TextAlign.Center)
+ .borderRadius(10)
+ .backgroundColor(0xFFFFFF)
+ .width('100%')
+ .fontSize(16)
+ NodeContainer(this.myNodeController)
+ .borderWidth(1)
+ .width(300)
+ .height(100)
+ }
+ Button("getPositionToWindowWithTransform")
+ .width(300)
+ .onClick(() => {
+ this.myNodeController.getPositionToWindowWithTransform();
+ })
+ }
+ .width("100%")
+ }
+ .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
+ }
+}
+```
+
请参考[节点操作示例](#节点操作示例)。
### getPositionToScreenWithTransform12+
@@ -622,6 +928,67 @@ getPositionToScreenWithTransform(): Position
**示例:**
+```ts
+import { NodeController, FrameNode, UIContext } from '@kit.ArkUI';
+
+const TEST_TAG: string = "FrameNode ";
+
+class MyNodeController extends NodeController {
+ public frameNode: FrameNode | null = null;
+ private rootNode: FrameNode | null = null;
+
+ makeNode(uiContext: UIContext): FrameNode | null {
+ this.rootNode = new FrameNode(uiContext);
+
+ this.frameNode = new FrameNode(uiContext);
+ this.frameNode.commonAttribute.backgroundColor(Color.Pink);
+ this.frameNode.commonAttribute.size({ width: 100, height: 100 });
+ this.rootNode.appendChild(this.frameNode);
+ return this.rootNode;
+ }
+
+ getPositionToScreenWithTransform() {
+ let positionToScreenWithTransform = this.rootNode?.getPositionToScreenWithTransform();
+ console.info(TEST_TAG + JSON.stringify(positionToScreenWithTransform));
+ }
+}
+
+@Entry
+@Component
+struct Index {
+ private myNodeController: MyNodeController = new MyNodeController();
+ private scroller: Scroller = new Scroller();
+ @State index: number = 0;
+
+ build() {
+ Scroll(this.scroller) {
+ Column({ space: 8 }) {
+ Column() {
+ Text("This is a NodeContainer.")
+ .textAlign(TextAlign.Center)
+ .borderRadius(10)
+ .backgroundColor(0xFFFFFF)
+ .width('100%')
+ .fontSize(16)
+ NodeContainer(this.myNodeController)
+ .borderWidth(1)
+ .width(300)
+ .height(100)
+ }
+
+ Button("getPositionToScreenWithTransform")
+ .width(300)
+ .onClick(() => {
+ this.myNodeController.getPositionToScreenWithTransform();
+ })
+ }
+ .width("100%")
+ }
+ .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
+ }
+}
+```
+
请参考[节点操作示例](#节点操作示例)。
diff --git a/zh-cn/application-dev/ui/arkts-user-defined-arktsNode-frameNode.md b/zh-cn/application-dev/ui/arkts-user-defined-arktsNode-frameNode.md
index 381c6ff497795cacc77c1aa53b3cda5fca369015..8140a4bcd020df546fc9105c990c518c360cc34c 100644
--- a/zh-cn/application-dev/ui/arkts-user-defined-arktsNode-frameNode.md
+++ b/zh-cn/application-dev/ui/arkts-user-defined-arktsNode-frameNode.md
@@ -766,6 +766,10 @@ FrameNode提供了查询接口用于返回实体节点的基础信息。具体
FrameNode提供了查询节点相对窗口、父组件以及屏幕位置偏移的信息接口([getPositionToWindow](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontowindow12),[getPositionToParent](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoparent12),[getPositionToScreen](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoscreen12),[getPositionToWindowWithTransform](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontowindowwithtransform12),[getPositionToParentWithTransform](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoparentwithtransform12),[getPositionToScreenWithTransform](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoscreenwithtransform12),[getLayoutPosition](../reference/apis-arkui/js-apis-arkui-frameNode.md#getlayoutposition12),[getUserConfigBorderWidth](../reference/apis-arkui/js-apis-arkui-frameNode.md#getuserconfigborderwidth12),[getUserConfigPadding](../reference/apis-arkui/js-apis-arkui-frameNode.md#getuserconfigpadding12),[getUserConfigMargin](../reference/apis-arkui/js-apis-arkui-frameNode.md#getuserconfigmargin12))。
+[getPositionToWindow](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontowindow12),[getPositionToParent](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoparent12),[getPositionToScreen](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoscreen12)三个接口获取到的位置信息关系如下图所示:
+
+
+
```ts
import { NodeController, FrameNode, UIContext } from '@kit.ArkUI';
diff --git a/zh-cn/application-dev/ui/figures/frameNode-position-relation.png b/zh-cn/application-dev/ui/figures/frameNode-position-relation.png
new file mode 100644
index 0000000000000000000000000000000000000000..484e56be7b9be9c39c309e33f774fb92def67f97
Binary files /dev/null and b/zh-cn/application-dev/ui/figures/frameNode-position-relation.png differ