| Previous | Next |
| MILEFFECTSERR_ALREADYATTACHEDTOLISTENER | MILEFFECTSERR_EMPTYBOUNDS |
MILEFFECTSERR_NOTAFFINETRANSFORM
MILEFFECTSERR_NOTAFFINETRANSFORM belongs to MIL affine-transform classification. A transform expected to be affine contains perspective or another non-affine mapping. The diagnostic goal for MILEFFECTSERR_NOTAFFINETRANSFORM is to identify the first rejecting object and transition, not merely the final high-level symptom.
What the status establishes
For MILEFFECTSERR_NOTAFFINETRANSFORM, an affine transform preserves parallel lines and is representable without a perspective division. When MILEFFECTSERR_NOTAFFINETRANSFORM is returned, effect code that assumes affine mapping can propagate rectangles by transforming corners and combining finite bounds; a projective matrix breaks that assumption even when some sample coordinates look plausible. Preserve the full matrix and the API that classified it rather than flattening it to scale and translation in the MILEFFECTSERR_NOTAFFINETRANSFORM path.
For MILEFFECTSERR_NOTAFFINETRANSFORM, inspect the following boundary: matrix classification before effect bounds or coordinate propagation.
Build a useful incident record
| Record | Why it matters here |
|---|---|
| Effect instance and owning graph or group identity | For MILEFFECTSERR_NOTAFFINETRANSFORM, recording effect instance and owning graph or group identity separates the MIL affine-transform classification boundary from a later wrapper symptom. |
| Connector, input, child, listener, property, or transform involved | In MILEFFECTSERR_NOTAFFINETRANSFORM diagnostics, recording connector, input, child, listener, property, or transform involved ties the HRESULT to the MIL affine-transform classification boundary rather than to the final visible failure. |
| Calculated input and output bounds | Comparing calculated input and output bounds shows whether MILEFFECTSERR_NOTAFFINETRANSFORM follows input, object state, or environment. |
| Construction sequence and first method returning the HRESULT | Preserving construction sequence and first method returning the HRESULT provides the evidence needed to test this distinction: eMPTYBOUNDS concerns the resulting region; NOTAFFINETRANSFORM rejects the mathematical transform class itself. |
Reduce the scenario safely
Test identity, translation, scale, rotation, and shear before adding any perspective term in the MILEFFECTSERR_NOTAFFINETRANSFORM path. For MILEFFECTSERR_NOTAFFINETRANSFORM, log every matrix element and the calculated bounds so a near-singular or projective value is not rounded into an apparently affine display.
- For MILEFFECTSERR_NOTAFFINETRANSFORM, verify the homogeneous matrix has the affine form and finite coefficients.
- When MILEFFECTSERR_NOTAFFINETRANSFORM is returned, rebuild the smallest graph containing only the implicated node and one known input.
- Log ownership changes and graph generation numbers in the MILEFFECTSERR_NOTAFFINETRANSFORM path.
- For MILEFFECTSERR_NOTAFFINETRANSFORM, validate the graph before allocating large intermediate resources.
Interpret the controls
| Test | Interpretation | Hold constant |
|---|---|---|
| Same environment, reduced input | If MILEFFECTSERR_NOTAFFINETRANSFORM disappears with a smaller faithful case, complexity within MIL affine-transform classification is implicated. | For MILEFFECTSERR_NOTAFFINETRANSFORM, keep effect instance and owning graph or group identity fixed while simplifying calculated input and output bounds. |
| Same input, fresh object generation | If MILEFFECTSERR_NOTAFFINETRANSFORM changes after rebuilding state, examine ownership across the effect instance, connector builder, graph owner, listener, and bounds calculator. | For MILEFFECTSERR_NOTAFFINETRANSFORM, place connector, input, child, listener, property, or transform involved on the timeline of the last successful transition. |
| Same operation on a controlled second path | If MILEFFECTSERR_NOTAFFINETRANSFORM follows one environment, the failure is not explained by source data alone. | For MILEFFECTSERR_NOTAFFINETRANSFORM, compare visual generation, effect registration, shader profile, rendering tier, and target dimensions while preserving construction sequence and first method returning the HRESULT. |
Keep neighboring failures separate
EMPTYBOUNDS concerns the resulting region; NOTAFFINETRANSFORM rejects the mathematical transform class itself. For MILEFFECTSERR_NOTAFFINETRANSFORM, do not catch the HRESULT and continue rendering with a partially connected graph; later failures can obscure the invariant that was first violated.
Prove the correction
A correction for MILEFFECTSERR_NOTAFFINETRANSFORM should let the operation at the MIL affine-transform classification boundary complete repeatedly under the original supported conditions. Repeat the control that begins with “Verify the homogeneous matrix has the affine form and finite coefficients” and confirm that the following lifecycle step also succeeds. For MILEFFECTSERR_NOTAFFINETRANSFORM, keep the original failing sample and one deliberate negative case so fallback cannot be mistaken for repair.
Technical references
When MILEFFECTSERR_NOTAFFINETRANSFORM is returned, these references define the public API family, object model, or error list used to interpret this status.
- Microsoft Open Specifications: HRESULT values.
- Microsoft: WPF bitmap effects overview.
- Microsoft: PixelShader class.
- Microsoft: Direct2D custom effects.
- Microsoft: ID2D1TransformGraph.
Looking for a different code? Search another status or error code.